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



Σχετικά έγγραφα
ΕΛΛΗΝΙΚΗ ΕΤΑΙΡΕΙΑ ΕΠΙΣΤΗΜΟΝΩΝ ΚΑΙ ΕΠΑΓΓΕΛΜΑΤΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΜΕΛΟΣ IFIP, IOI Org. GREEK COMPUTER SOCIETY MEMBER OF IFIP, IOI Org.

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

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

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

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

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

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

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

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

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

Προγραμματισμός Υπολογιστών με C++

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Υπολογιστικά Mαθηματικά II

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

Φροντιςτήριο. Linked-List

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

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

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

Οντοκεντρικός Προγραμματισμός

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου ( ) gepap@aueb.gr

Χωρική Βάση δεδοµένων Autocad

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

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

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

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

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

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

ΠΡΟΤΥΠΑ. ΠΑΡΑ ΕΙΓΜΑ ηµιουργία πρότυπου στοίβας (stack) και στη συνέχεια δηµιουργία µιας στοίβας σηµείων.

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

Κεφάλαιο : Επαναλήψεις (for, do-while)

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

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)

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

Συναρτήσεις (Functions) Εισαγωγή στη C++

Μάθημα 21: Ουρές (Queues)

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

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

Προγραμματισμό για ΗΜΥ

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

Αριθμητικοί αλγόριθμοι

2 using namespace s t d ; 4 { 12 int t= x ; 6 x=y ; 7 y=t ; 8 } 9 11 { 13 x= y ; 14 y=t ; 15 } {

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

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΑΣΚΗΣΕΙΣ ΓΙΑ ΤΟ ΕΡΓΑΣΤΗΡΙΟ 2

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 8: Συναρτήσεις. Κ.

Εισαγωγή στην πληροφορική

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

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv

17TimeThis.h function returns reference pointer to same object { return *this; }

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

Συναρτήσεις διαχείρισης αλφαριθμητικών

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

Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων

HY150a Φροντιστήριο 3 24/11/2017

ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ

Ειδικά Θέματα Ι. Σήμερα!

Δισδιάστατοι Πίνακες (2D Arrays) Εισαγωγή στη C++

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

Διάλεξη 9η: Πίνακες (arrays)

Ονοματεπώνυμο και ΑΜ: Είχα παραδώσει εργασίες τα προηγούμενα ακαδημαϊκά έτη: ΚΑΛΗ ΕΠΙΤΥΧΙΑ!

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

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

Διάλεξη 11η: Δείκτες, μέρος 1

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

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

Εισαγωγή στην πληροφορική

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

Κεφάλαιο : Εισαγωγή στην C: (Διαλέξεις 3-4)

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

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

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

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

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

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

ΕΠΛ 032.3: Προγραµµατισµός ΜεθόδωνΕπίλυσηςΠροβληµάτων

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

Πίνακες (Arrays) Εισαγωγή στη C++

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

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

Διάλεξη 12η: Δείκτες, μέρος 2

Οντοκεντρικός Προγραμματισμός

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Προγραμματισμός Υπολογιστών με C++

Αρχές Προγραμματισμού

Γλώσσα Προγραμματισμού C

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

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

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Τεχνολογίες Υλοποίησης Αλγορίθµων

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

Transcript:

21 ος ΠΑΝΕΛΛΗΝΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΗΣ ΦΑΣΗΣ Οι παρακάτω λύσεις είναι απολύτως ενδεικτικές Θέμα 1 ο : HydroloGIS C++ Γαϊτανίδης Απόστολος Ιδ. ΓΕΛ Εκπ/τηρίων Μαντουλίδη LANG: C++ TASK: hydrologis #include <stdio.h> #include <algorithm> #include <math.h> #define di 1000000 using namespace std; typedef unsigned long long ll; ll a,b,n,m,vr,fj[30],fg[30]; double f[30],fh[30]; FILE *fin = fopen("hydrologis.in","r"),*fout = fopen("hydrologis.out","w"); int main() f[10] = 3.6288; fg[10] = 3628800; for(ll i = 11;i<=20;i++) f[i] = f[i-1] * i; fg[i] = fg[i-1]*i; fj[i] = (ll)(round(f[i])); fh[i] = (double)fg[i]/(double)1000000; fscanf(fin,"%llu %llu %llu %llu %llu",&n,&m,&vr,&a,&b); double s = (double)(m*(m+1))/(double)(2); double ans = (double)vr + (double)a*fh[n] - (double)b*s; fprintf(fout,"%llu\n",(ll)round(ans)); [25 Μονάδες] PASCAL Καρύδης Θρασύβουλος 3ο ΓΕΛ Κέρκυρας (* LANG: Pascal TASK: hydrologis *) program hydrologis; 1 Από 8

uses SysUtils; var a,b,n,m:integer; V_R:longint; V:longint; input,output:text; function factorial(k:integer):real; begin if ( k=1 ) then factorial := 1 else factorial:= factorial(k-1)*k; end; function sum(k:integer):longint; var i:integer; s:longint; begin s:=0; for i := 1 to k do s:= s + i; sum:=s; end; begin assign(input,'hydrologis.in'); reset(input); readln(input,n); readln(input,m); readln(input,v_r); readln(input,a); readln(input,b); V:= round(v_r + a*factorial(n)/1000000 - b*sum(m)); assign(output,'hydrologis.out'); rewrite(output); writeln(output,v); close(output); end. 2 Από 8

Ουρουελίδης Ευστάθιος 2ο ΓΕΛ Πολίχνης LANG: C TASK: hydrologis #include <stdio.h> #include <math.h> #include <stdlib.h> int main() int i, N, M, V, Vr, a, b, tmp2; double tmp, Va; FILE *fin = fopen("hydrologis.in", "r"); fscanf(fin, "%d %d %d %d %d", &N, &M, &Vr, &a, &b); fclose(fin); tmp = 1; for (i=1;i<=n;i++) tmp = ((tmp*1000000) * i)/1000000; tmp2 = 0; for (i=1;i<=m;i++) tmp2 += i; Va = Vr + (a * (tmp/1000000)) - (b * tmp2); V = (int)(va+0.5); FILE *fout = fopen("hydrologis.out", "w"); fprintf(fout, "%d\n", V); fclose(fout); C 3 Από 8

ΘΕΜΑ 2 ο : Aegean C++ Μπιτζές Γεώργιος 1ο ΓΕΛ Κερατσινίου LANG: C++ TASK: aegean [30 Μονάδες] #include <stdio.h> #include <map> using namespace std; map<int, int> horiz; map<int, int> vert; int D = 0; int horcount = 0; int vertcount = 0; int horizontals[200000]; int verticals[200000]; int N; int process(int x, int y) if(x > D) D = x; if(y > D) D = y; if(horiz[x] == 0) horizontals[++horcount] = x; horiz[x] = y; if(vert[y] == 0) verticals[++vertcount] = y; vert[y] = x; if(horiz[x] > y) horiz[x] = y; if(vert[y] > x) vert[y] = x; int compare(const void *a, const void *b) return *(int*)a - *(int*)b; int readfile(void) FILE *in = fopen("aegean.in", "r"); fscanf(in, "%d", &N); int i, x, y; for(i = 1; i <= N; i++) fscanf(in, "%d %d", &x, &y); process(x, y); 4 Από 8

int output(void) FILE *out = fopen("aegean.out", "w"); fprintf(out, "%d\n", D); fprintf(out, "%d %d\n", horcount, vertcount); qsort(horizontals+1, horcount, sizeof(int), compare); qsort(verticals+1, vertcount, sizeof(int), compare); int i; for(i = 1; i <= horcount; i++) fprintf(out, "%d %d\n", horizontals[i], D+1 - horiz[horizontals[i]]); for(i = 1; i <= vertcount; i++) fprintf(out, "%d %d\n", verticals[i], D+1 - vert[verticals[i]]); fclose(out); int main(void) readfile(); output(); 5 Από 8

ΘΕΜΑ 3ο: CPU C++ Παναγιωτάκος Γεώργιος 1ο ΓΕΛ Σπάρτης USER:gpan1ge LANG:C++ TASK:cpu [45 Μονάδες] #include <iostream> #include <fstream> using namespace std; int n,m; int C[50000][2]; int ins[50000][2],outs[50000][2]; int insn=0,outsn=0; int c[2][100000][2]; int cn[2]=0,0; bool pos( int a1,int a2,int node ) int m1,m2; m1 = min(a1,a2); m2 = max(a1,a2); if( node>m1 && node<m2 ) return true; else return false; int valid(int cn,int a,int b) int i=0,e; for(e=0;e<cn[cn];e++) if( c[cn][e][0] == -1 ) continue; if( pos(c[cn][e][0],c[cn][e][1],a)!= pos(c[cn][e] [0],c[cn][e][1],b) ) return e; return -1;//<--valid int min( int a,int b ) return ((a<b)?a:b); int max( int a,int b) return ((a>b)?a:b); 6 Από 8

bool change( int cn,int ind ) int o1,o2; o1 = valid(1-cn,c[cn][ind][0],c[cn][ind][1]); if( o1 == -1 ) return -2; c[1-cn][cn[1-cn]][0] = c[cn][ind][0]; c[1-cn][cn[1-cn]][1] = c[cn][ind][1]; cn[1-cn]++; c[cn][ind][0] = -1; c[cn][ind][1] = -1; //<-success else return -1;//<--failure int main() ifstream fin( "cpu.in" ); ofstream fout( "cpu.out" ); fin >> n; fin >> m; int u,i0,i1,i2,e,a,b,sol; sol = m; for(u=0;u<m;u++) fin >> a >> b; //cout << a << " " << b << "\n"; C[u][0] = a; C[u][1] = b; i0 = valid(0,a,b); if( i0 == -1 ) c[0][cn[0]][0] = a;c[0][cn[0]][1] = b;cn[0]++; continue; //cout << u << "Not in the first\n"; i1 = valid(1,a,b); if( i1 == -1 ) c[1][cn[1]][0] = a;c[1][cn[1]][1] = b;cn[1]++; continue; //cout << u << "Not in the second\n"; i0 = change( 0, i0 ); if( i0 == -2 ) c[0][cn[0]][0] = a;c[0][cn[0]][1] = b;cn[0]++; continue; i1 = change( 1, i1 ); if( i1 == -2 ) c[1][cn[1]][0] = a;c[1][cn[1]][1] = b;cn[1]++; continue; sol = u; break; fout << sol << "\n"; //cout << sol << "\n"; 7 Από 8

Αρσένης Γεράσιμος 2ο ΓΕΛ Μοσχάτου LANG: C TASK: cpu #include <stdio.h> #define MAX 50005 void swap(int *a, int *b) int tmp; tmp = *a; *a = *b; *b = tmp; return; struct vert int x, y; ; int diff_side(int a, int b, int c, int d) if (d<b && d>a && (c>b c<a)) return 1; if (c<b && c>a && (d>b d<a)) return 1; int main() FILE *fin=fopen("cpu.in", "r"), *fout=fopen("cpu.out", "w"); int n, m, x, y, i, j, type[max], t1, t2; struct vert cpu[max]; fscanf(fin, "%d %d", &n, &m); for (i=1; i<=m; i++) fscanf(fin, "%d %d", &x, &y); if (x>y) swap(&x, &y); cpu[i].x = x; cpu[i].y = y; t1=t2=0; for (j=1; j<i; j++) if (diff_side(x, y, cpu[j].x, cpu[j].y)) if (type[j]==1) t1++; else t2++; //printf("%d\n", cnt); if (t1 && t2) fprintf(fout, "%d\n", i-1); if (t1) type[i] = 2; else type[i] = 1; //printf("diff: %d\n", diff_side(1, 4, 3, 6)); fprintf(fout, "%d\n", m); C 8 Από 8