ΕΛΛΗΝΙΚΗ ΕΤΑΙΡΕΙΑ ΕΠΙΣΤΗΜΟΝΩΝ ΚΑΙ ΕΠΑΓΓΕΛΜΑΤΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΜΕΛΟΣ IFIP, IOI Org. GREEK COMPUTER SOCIETY MEMBER OF IFIP, IOI Org.



Σχετικά έγγραφα
ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΗΣ ΦΑΣΗΣ Οι παρακάτω λύσεις είναι απολύτως ενδεικτικές

24ος ΠΑΝΕΛΛΗΝΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΛΛΗΝΙΚΗ ΕΤΑΙΡΕΙΑ ΕΠΙΣΤΗΜΟΝΩΝ ΚΑΙ ΕΠΑΓΓΕΛΜΑΤΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΜΕΛΟΣ IFIP, IOI

24ος ΠΑΝΕΛΛΗΝΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΠΡΟΒΛΗΜΑΤΟΣ Β ΦΑΣΗΣ

ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

24ος ΠΑΝΕΛΛΗΝΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΛΛΗΝΙΚΗ ΕΤΑΙΡΕΙΑ ΕΠΙΣΤΗΜΟΝΩΝ ΚΑΙ ΕΠΑΓΓΕΛΜΑΤΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ GREEK COMPUTER SOCIETY

ΘΕΜΑ Α ΦΑΣΗΣ. Υπολογιστικά Νέφη Ενδεικτικές Απαντήσεις

Προέλευση της Pazcal ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Εισαγωγή στον Προγραμματισμό

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Δομημένος Προγραμματισμός

Fortran και Αντικειμενοστραφής προγραμματισμός.

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

Συναρτήσεις και Πίνακες

ΔΙΑΡΚΕΙΑ ΕΞΕΤΑΣΗΣ: 2 ΩΡΕΣ

ιαφάνειες παρουσίασης #5 (β)

Εισαγωγή στον Προγραμματισμό

i M-1 1. ij f(i, j) N-1. (pixel) 2. M N (x, y) (x, y ) = 256. R(x, y), G(x, y), B(x, y)

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Δομημένος Προγραμματισμός

Διάλεξη 9: Δυναμική Δέσμευση Μνήμης

ΑΠΑΝΤΗΣΕΙΣ. H διαδικασία ανεύρεσης λογικών λαθών περιλαμβάνει : β- Σωστό. Διαπίστωση του είδους του λάθους γ- Σωστό δ- Λάθος

Lab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1

Διαφάνειες παρουσιάσεων Αρχικές Διαφάνειες σε Pascal: Σ.Ζάχος, Ν.Παπασπύρου Προσαρμογή σε Fortran: Α.Παγουρτζής, Δ.Σούλιου

Δομημένος Προγραμματισμός (ΤΛ1006)

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης (Κεφάλαιο , KNK-2ED)

Υποπρογράµµατα Συναρτήσεις. Στόχοι Μαθήµατος. Οι µαθητές να µπορούν:

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

Lab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 8 η : Συναρτήσεις Χειµερινό Εξάµηνο 2011

Εργαστηριακή Άσκηση 1

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Εισαγωγή στον Προγραμματισμό

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

Δομημένος Προγραμματισμός

Εισαγωγή στον Προγραμματισμό

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2013

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

Δομημένος Προγραμματισμός

Εργαστήριο 5. Εντολή if και παραλλαγές: if-else, πολλαπλές if, πολλαπλές if-else. Απλές και σύνθετες εντολές. Εντολή switch.

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Εισαγωγή στον Προγραμματισμό

Μεθόδων Επίλυσης Προβλημάτων

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ασκήσεις Επανάληψης

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

Ενότητες στην C Τεχνική Υλοποίησης Αφαιρετικών Τύπων Δεδομένων στην C

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ

Προγραμματισμός I (Θ)

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Προγραμματισμός I (Θ)

Προγραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Μεταγλωττιστές 2019 Θέμα εργασίας

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Εργαστήριο 4_1 Λεκτική Ανάλυση - Flex Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΑΠΑΝΤΗΣΕΙΣ. α- Σωστό β- Σωστό γ- Λάθος δ- Λάθος ε- Σωστό στ- Σωστό

ΛΥΣΕΙΣ ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2007

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

Εισαγωγή στο Gnuplot. Σφυράκης Χρυσοβαλάντης

ιαφάνειες παρουσίασης #6

Παράλληλη Επεξεργασία Κεφάλαιο 6 ο Σύγχρονος Παραλληλισμός

Μεθόδων Επίλυσης Προβλημάτων

Διάλεξη 10: Δομές Δεδομένων Ι (Στοίβες & Ουρές)

Αναφορά εργασίας. Χατζητζάνος Ευάγγελος

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Αλγόριθμοι Ταξινόμησης Μέρος 1

Προγραμματιστικές Τεχνικές

Μεθόδων Επίλυσης Προβλημάτων

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΗ IOYNIOY 2018 ΘΕΜΑΤΑ Α ΟΝΟΜΑΤΕΠΩΝΥΜΟ:... ΑΕΜ: ΕΞΑΜΗΝΟ:

Υπολογισμός - Εντολές Επανάληψης

Συναρτήσεις. Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων

Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Παραδείγματα με openmp

Δομές Δεδομένων - Εργαστήριο 5. Ουρές Προτεραιότητας

ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

Η γλώσσα προγραμματισμού C

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Γεώργιος Δημητρίου Προσαρμογή Εισαγωγικού Μαθήματος από Prof. Stephen A. Edwards (Columbia University)

Παράλληλη Επεξεργασία Κεφάλαιο 9 ο Επιµερισµός εδοµένων

Παράλληλη Επεξεργασία Κεφάλαιο 2 Παραλληλισμός Δεδομένων

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Δομημένος Προγραμματισμός

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Μεθόδων Επίλυσης Προβλημάτων

Ενότητα 4: «Εισαγωγή στον Προγραμματισμό. Τα πρώτα προγράμματα σε γλώσσα C»

Πίνακες. Οι πίνακες αποτελούν ένα σηµαντικό δοµηµένο τύπο δεδοµένων (structured data type) ή πιο απλά µία δοµή δεδοµένων (data structure).

Transcript:

21 ος ΠΑΝΕΛΛΗΝΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΜΑ B ΦΑΣΗΣ (Μαθητές Λυκείου, ΕΠΑΛ, ΕΠΑΣ) ΧΑΛΚΙΔΙΚΟ ΑΛΦΑΒΗΤΟ ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ Οι παρακάτω λύσεις είναι απολύτως ενδεικτικές. Αρσένης Γεράσιμος 2 ο ΓΕΛ Μοσχάτου /* LANG: C TASK: evripos */ #include <stdio.h> #include <math.h> #include <stdlib.h> #define MAX 205 typedef struct { int x, y; coords; coords point[max]; double a[max][max]; int n; double dist(int i, int j) { return sqrt( (point[i].xpoint[j].x)*(point[i].x-point[j].x) + (point[i].ypoint[j].y)*(point[i].y-point[j].y) ); int cmp(const coords *i, const coords *j) { return i->x - j->x; int main() { FILE *fin=fopen("evripos.in", "r"), *fout=fopen("evripos.out", "w"); int i, j, k, x, y; double min, tmp; fscanf(fin, "%d", &n); n+=2; point[1].x = point[1].y = 0; C

for (i=2; i<=n; i++) { fscanf(fin, "%d %d", &x, &y); point[i].x=x; point[i].y=y; qsort(point+1, n, sizeof(coords), cmp); a[1][2] = dist(1, 2); for (j=2; j<=n; j++) for (i=1; i<=j-1; i++) { if (i==1 && j==2) a[i][j] = dist(i, j); else if (i<j-1) a[i][j] = a[i][j-1] + dist(j, j-1); else { a[i][j] = a[1][i] + dist(1, j); for (k=2; k<=i-1; k++) { tmp = a[k][i]+dist(k, j); if (tmp < a[i][j]) a[i][j] = tmp; min = a[n-1][n] + dist(n-1, n); fprintf(fout, "%d\n", (int)round(min)); return 0; C++ Γαϊτανίδης Απόστολος Ιδ. ΓΕΛ «Μαντουλίδη» /* LANG: C++ TASK: evripos */ #include <stdio.h> #include <math.h> #include <stdlib.h> #define inf 0x3f3f3f3f #define MAXN 210 typedef struct{ int x,y; point; double dist(point a,point b){

return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y)); double min(double a,double b){ if(a<b)return a; else return b; int cmp(const void *a,const void *b){ point *c = (point *)a,*d = (point *)b; if(c->x >d->x)return 1; else return -1; int n; point p[maxn]; double a[maxn][maxn]; int main(){ FILE *fin = fopen("evripos.in","r"),*fout = fopen("evripos.out","w"); fscanf(fin,"%d",&n); p[1].x = p[1].y = 0; n+=2; for(int i=2;i<=n;i++){ fscanf(fin,"%d %d",&p[i].x,&p[i].y); qsort(p+1, n, sizeof(point), cmp); a[1][2] = dist(p[1], p[2]); for(int j=2;j<=n;j++){ for(int i =1;i<=j-1;i++){ if(i==1 && j==2)a[i][j] = dist(p[i],p[j]); else if(j>i+1)a[i][j] = a[i][j-1] + dist(p[j-1],p[j]); else { a[i][j] = a[1][i] + dist(p[1],p[j]); for(int k=1;k<=i-1;k++){ double q= a[k][i] + dist(p[k],p[j]); if(q<a[i][j]){ a[i][j] = q; double m = a[n-1][n] + dist(p[n-1],p[n]); for (int i=1; i<n; i++) { m = min(m, a[i][n] + dist(p[i],p[n])); fprintf(fout,"%d\n",(int)round(m)); return 0;

PASCAL Καρύδης Θρασύβουλος ΓΕΛ Κέρκυρας PROGRAM evripos; {LANG: Pascal TASK: evripos USES SysUtils; CONST MaxPoints = 204; INF = 100000; TYPE coordinates = record X:integer; Y:integer; end; Coordsys = array[1..maxpoints] of coordinates; N, I,J,K, d:integer; q:real; input,output:text; points:coordsys; l:array[1..maxpoints,1..maxpoints] of real; FUNCTION dist(a,b:coordinates):real; //euclidean distiance// dist:=sqrt(sqr(a.x-b.x)+sqr(a.y-b.y)) PROCEDURE swap( a, b: coordinates); t: integer; t := a.x; a.x := b.x; b.x := t; t := a.y;

a.y := b.y; b.y := t; FUNCTION Split(start, stop: integer): integer; left, right: integer; pivot: integer; pivot := points[start].x; left := start + 1; right := stop; WHILE left <= right DO WHILE (left <= stop) AND (points[left].x < pivot) DO left := left + 1; WHILE (right > start) AND (points[right].x >= pivot) DO right := right - 1; IF left < right THEN swap(points[left], points[right]); swap(points[start], points[right]); Split := right PROCEDURE QuicksortRecur(start, stop: integer); splitpt: integer; IF start < stop THEN splitpt := Split(start, stop); QuicksortRecur(start, splitpt-1); QuicksortRecur(splitpt+1, stop); END PROCEDURE Quicksort(size: Integer; points: Coordsys); QuicksortRecur(1, size) assign(input,'evripos.in'); reset(input); readln(input,n); N:=N+2; points[1].x:=0; points[1].y:=0;

readln(input,points[n].x,points[n].y); FOR I := 2 TO N-1 DO readln(input,points[i].x,points[i].y); close(input); Quicksort(N, points); FOR J := 2 TO N DO FOR I := 1 TO J-1 DO IF (I=1) AND (J=2) THEN l[i,j] := dist(points[i],points[j]) ELSE IF J>I+1 THEN l[i,j]:= l[i,j-1] + dist(points[j-1],points[j]) ELSE l[i,j] := INF; FOR K := 1 TO I-1 DO q:= l[k,i] + dist(points[k],points[j]); IF q < l[i,j] THEN l[i,j]:= q; d:= Round( l[n-1,n] + dist(points[n-1],points[n])); assign(output,'evripos.out'); rewrite(output); writeln(output,d); close(output); end. Τα σχόλια παραλείφθηκαν