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



Σχετικά έγγραφα
24ος ΠΑΝΕΛΛΗΝΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

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

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

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

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

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

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

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

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

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

Α2. Να γράψετε στο τετράδιό σας τους αριθμούς 1,2,3,4,5 από τη Στήλη Α και δίπλα το γράμμα α,β,γ,δ,ε,στ της Στήλης Β που δίνει τη σωστή αντιστοιχία.

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

Απαντήσεις στο μάθημα Δομημένος Προγραμματισμός ΕΠΑΛ

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

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

που θα δώσει αποτέλεσµα 48, λόγω της αριστερής προσεταιριστικότητας των τελεστών / και *, ενώ η επιθυµητή αντικατάσταση θα ήταν η

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδηµαϊκό έτος ΑΣΚΗΣΗ #5 Προτεινόµενη λύση

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

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

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

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Δομές Δεδομένων και Αλγόριθμοι (Γ εξάμηνο) Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Ηπείρου. Άσκηση εργαστηρίου #6 (Υλοποίηση δυαδικού δένδρου αναζήτησης)

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

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

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

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

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

Πρόγραμμα αυτόματης ανάγνωσης και βαθμολόγησης απαντήσεων σε εξέταση με την μέθοδο πολλαπλών επιλογών..

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

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

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

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

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

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

Προγραμματισμός PASCAL

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

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΑΣΚΗΣΗ #5 Προτεινόμενη Λύση

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

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

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

Η γλώσσα προγραμματισμού 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)

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

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

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

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

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

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

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

Διάλεξη 5η: Εντολές Επανάληψης

Δομή Επανάληψης. Κεφάλαιο 7 Mike Trimos

Δομές Επανάληψης. Εισαγωγή στη C++

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

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

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

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

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

Να εκτυπωθούν οι πρώτες Ν σειρές του τριγώνου, χρησιµοποιώντας ένα πίνακα µεγέθους Ν στοιχείων (η Ν-οστή σειρά περιέχει Ν στοιχεία).

Τμ. Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών Α Εξεταστική Περίοδος, 25 Ιουνίου 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ Ηλίας. Κ. Σάββας

// Write a program which defines 2 integer constants and prints their sum, difference and //product.

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

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

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

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης

ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ

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

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

C: Από τη Θεωρία στην Εφαρμογή

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

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

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

Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες.

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τάξεις Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Προγραμματισμός Ι (ΗΥ120)

Γράφοι. Ορολογία. Ορισµός: G = (V, E) όπου. Ορολογία (συνέχεια) γράφος ή γράφηµα (graph) V:ένα σύνολο E:µια διµελής σχέση στο V

Σημειώσεις δεύτερης εβδομάδας

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

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

Προγραμματισμός PASCAL

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

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

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

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

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

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

Δομές Δεδομένων. Ενότητα 3: Ουρές Εισαγωγή-Υλοποίηση ΑΤΔ Ουρά με πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

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

Μαζέρας Αχιλλέας. Οι εντολές επανάληψης στην Pascal (While) Φυσικός Αυτοματιστής M.Sc. Νοέµβριος 2009

Εργαστήριο 9: Αρχεία

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

Δομές ελέγχου ροής προγράμματος

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

Transcript:

20 ος ΠΑΝΕΛΛΗΝΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΠΡΟΒΛΗΜΑΤΟΣ Β ΦΑΣΗΣ (ΣΑΜΠΟΤΑΖ ΣΤΟ ΓΟΡΓΟΠΟΤΑΜΟ) Περισσότεροι από τους τρεις μαθητές των οποίων τους κώδικες παρουσιάζουμε, υπέβαλαν λύση που συγκέντρωσε το 100% των σημείων επιτυχίας. Από αυτές ενδεικτικά η Επιστημονική Επιτροπή παρουσιάζει μία για κάθε γλώσσα του Διαγωνισμού. PASCAL ΔΗΜΗΤΡΗΣ ΜΟΥΔΗΛΟΣ ΓΕΛ ΑΝΑΒΥΣΣΟΥ. {LANG: PASCAL TASK: sabotage Program sabotage; var width,height,mines,mine_x,mine_y,i:longint; start_x,start_y,end_x,end_y: longint; map:array [1..1000,1..1000] of longint; c_x:array[1..10000] of longint ; c_y:array[1..10000] of longint ; t_x:array[1..10000] of longint; t_y:array[1..10000] of longint ; N,temp_step,step:longint; x,y,tx,ty:longint; ok:boolean; fdata,fdata2:text; Begin assign (fdata,'sabotage.in'); reset (fdata); read (fdata,width); read (fdata,height); read (fdata,mines); if mines<>0 then for i:=1 to mines do read (fdata,mine_x); read (fdata,mine_y); map[mine_x,mine_y]:=-1; read (fdata,start_x); +30-210-3300999, fax +30-210-3301893 E-mail: epy@epy.gr, Web: www.epy.gr 1 από 10

read (fdata,start_y); read (fdata,end_x); read (fdata,end_y); c_x[1]:=end_x; c_y[1]:=end_y; t_x[1]:=end_x; t_y[1]:=end_y; N:=1; temp_step:=0; step:=1; ΕΛΛΗΝΙΚΗ ΕΤΑΙΡΕΙΑ ΕΠΙΣΤΗΜΟΝΩΝ ΚΑΙ While (map[start_x,start_y]=0) and (ok=true) do ok:=false; For i:=1 to step do if c_x[i]+1<=width then if (map[c_x[i]+1,c_y[i]]=0) then map[c_x[i]+1,c_y[i]]:=n; temp_step:=temp_step+1; t_x[temp_step]:=c_x[i]+1; t_y[temp_step]:=c_y[i]; 1,c_y[i]]:=N; if c_x[i]-1>0 then if (map[c_x[i]-1,c_y[i]]=0) then map[c_x[i]- temp_step:=temp_step+1; t_x[temp_step]:=c_x[i]-1; t_y[temp_step]:=c_y[i]; if c_y[i]-1>0 then if (map[c_x[i],c_y[i]-1]=0) then map[c_x[i],c_y[i]-1]:=n; +30-210-3300999, fax +30-210-3301893 E-mail: epy@epy.gr, Web: www.epy.gr 2 από 10

temp_step:=temp_step+1; t_x[temp_step]:=c_x[i]; t_y[temp_step]:=c_y[i]-1; For i:=1 to temp_step do c_x[i]:=t_x[i]; c_y[i]:=t_y[i]; step:=temp_step; N:=N+1; temp_step:=0; close(fdata); map[end_x,end_y]:=0; assign (fdata2,'sabotage.out'); rewrite (fdata2); if map[start_x,start_y]<>0 then x:=start_x; y:=start_y; writeln(fdata2,map[start_x,start_y]+1); writeln(fdata2,x,' ',y); For i:=map[start_x,start_y] downto 1 do tx:=x; ty:=y; ok:=false; if y+1<=height then if (ok=false) and (map[x,y+1]=i- 1) then ty:=y+1; writeln(fdata2,x,' ',ty); if x-1>0 then if (ok=false) and (map[x-1,y]=i- 1) then +30-210-3300999, fax +30-210-3301893 E-mail: epy@epy.gr, Web: www.epy.gr 3 από 10

tx:=x-1; writeln(fdata2,tx,' ',y); if x+1<=width then if (ok=false) and (map[x+1,y]=i-1) then end else close(fdata2); halt(0); End. x:=tx; tx:=x+1; writeln(fdata2,tx,' ',y); y:=ty; writeln(fdata2,'0'); C++ ΙΩΑΝΝΗΣ ΧΑΤΖΗΜΙΧΟΣ 8 ο ΓΕΛ ΛΑΡΙΣΑΣ /* LANG: C++ TASK: sabotage */ #include <cstdio> #include <cstdlib> #include <queue> using namespace std; int moves[3][2] = { {0, -1, {0, 1, {1, 0 ; struct point { int r; int c; ; int par[1001][1001], R, C; +30-210-3300999, fax +30-210-3301893 E-mail: epy@epy.gr, Web: www.epy.gr 4 από 10

void BFS(int r, int c) { queue<point> Q; point cur, next; int i; cur.r = r; cur.c = c; Q.push(cur); ΕΛΛΗΝΙΚΗ ΕΤΑΙΡΕΙΑ ΕΠΙΣΤΗΜΟΝΩΝ ΚΑΙ while(!q.empty()) { cur = Q.front(); Q.pop(); for (i=0; i<3; i++) { next.r = cur.r + moves[i][0]; next.c = cur.c + moves[i][1]; if ( next.r <= 0 next.r > R next.c <= 0 next.c > C ) continue; if ( par[next.r][next.c] ) continue; par[next.r][next.c] = i+1; Q.push(next); int main(void) { FILE *in = fopen("sabotage.in", "r"), *out = fopen("sabotage.out", "w"); int i, M, r, c, sr, sc; int mv[1000001], mvcnt = 0, mvid; fscanf(in, "%d %d %d", &C, &R, &M); for (i=1; i<=m; i++) { fscanf(in, "%d %d", &c, &r); par[r][c] = 8888; fscanf(in, "%d %d", &sc, &sr); BFS(sr, sc); fscanf(in, "%d %d", &c, &r); if (!par[r][c] ) { +30-210-3300999, fax +30-210-3301893 E-mail: epy@epy.gr, Web: www.epy.gr 5 από 10

fprintf(out, "0\n"); else { while (r!=sr c!=sc) { mvid = par[r][c]-1; mv[++mvcnt] = mvid; r -= moves[mvid][0]; c -= moves[mvid][1]; fprintf(out, "%d\n%d %d\n", mvcnt+1, sc, sr); r = sr; c = sc; for (i=mvcnt; i>=1; i--) { r += moves[mv[i]][0]; c += moves[mv[i]][1]; fprintf(out, "%d %d\n", c, r); fclose(in); fclose(out); return 0; C ΑΝΑΣΤΑΣΙΟΣ ΓΕΡΜΑΝΙΔΗΣ ΚΟΛΛΕΓΙΟ ΨΥΧΙΚΟΥ /* LANG: C TASK: sabotage */ #include <stdio.h> #define MAXSIZE 1001 int Qx[MAXSIZE*MAXSIZE], Qy[MAXSIZE*MAXSIZE]; char field[maxsize][maxsize]; int main(void) { FILE *in, *out; in=fopen("sabotage.in", "r"); out=fopen("sabotage.out", "w"); +30-210-3300999, fax +30-210-3301893 E-mail: epy@epy.gr, Web: www.epy.gr 6 από 10

int x=0, y=0, startx=0, starty=0, endx=0, endy=0, mines=0, minex=0, miney=0, steps=0, tailqx=0, tailqy=0, headqx=0, headqy=0, i=0, p=0, direction=0, mode=0, ux=0, uy=0, vx=0, vy=0, kx=0, ky=0, found=0, finished=0; for (i=1; i<x+1; i++) { for (p=1; p<y+1; p++) { field[i][p] = 0; for (i=0;i<(x+1)*(y+1);i++) { Qx[i]=0; Qy[i]=0; fscanf(in,"%d %d\n", &x, &y); if (startx>endx) { direction=1; fscanf(in,"%d\n", &mines); for (i=0;i<mines;i++) { fscanf(in,"%d %d\n", &minex, &miney); field[minex][miney]=1; minex=0; miney=0; fscanf(in,"%d %d\n", &startx, &starty); fscanf(in,"%d %d\n", &endx, &endy); fclose(in); field[startx][starty]=4; Qx[tailqx++]=startx; Qy[tailqy++]=starty; while (!finished) { ux=qx[headqx]; uy=qy[headqy]; if (ux==0 && uy==0) { finished=1; +30-210-3300999, fax +30-210-3301893 E-mail: epy@epy.gr, Web: www.epy.gr 7 από 10

for (i=0;i<3 && ux!=0 && uy!=0;i++) { vx=0; vy=0; if (!direction) { if (field[ux+1][uy]==0 && ux!=x) { vx=ux+1; vy=uy; mode=1; else if (field[ux][uy+1]==0 && uy!=endy) { vy=uy+1; vx=ux; mode=2; else if (field[ux-1][uy]==0 && ux!=1) { vx=ux-1; vy=uy; mode=3; uy!=endy) { { else if (direction) { if (field[ux-1][uy]==0 && ux!=1) { vx=ux-1; vy=uy; mode=3; else if (field[ux][uy+1]==0 && vy=uy+1; vx=ux; mode=2; else if (field[ux+1][uy]==0 && ux!=x) vx=ux+1; vy=uy; mode=1; if (vx!= 0 && vy!= 0 && field[vx][vy]==0) { field[vx][vy]=mode; if (vx==endx && vy==endy) { found=1; +30-210-3300999, fax +30-210-3301893 E-mail: epy@epy.gr, Web: www.epy.gr 8 από 10

finished=1; Qx[tailqx++]=vx; Qy[tailqy++]=vy; headqx++; headqy++; steps++; if (!found) { fprintf(out,"%d\n",0); else { kx=endx; ky=endy; for(i=0;i<(x+1)*(y+1);i++) { Qx[i]=0; Qy[i]=0; for (i=steps+1; i>0; i--) { if (field[kx][ky]!=4) { if (field[kx][ky]==1) { Qx[i]=kx-1; Qy[i]=ky; else if (field[kx][ky]==2) { Qx[i]=kx; Qy[i]=ky-1; else if (field[kx][ky]==3) { Qx[i]=kx+1; Qy[i]=ky; kx=qx[i]; ky=qy[i]; for (p=0; Qx[p]==0;p++) { ; +30-210-3300999, fax +30-210-3301893 E-mail: epy@epy.gr, Web: www.epy.gr 9 από 10

fprintf(out,"%d\n", steps-p+3); for (i=p;i<steps+2;i++) { fprintf(out,"%d %d\n", Qx[i], Qy[i]); fprintf(out,"%d %d\n", endx, endy); fclose(out); return(0); +30-210-3300999, fax +30-210-3301893 E-mail: epy@epy.gr, Web: www.epy.gr 10 από 10