Τελικά Αποτελέσματα Παγκύπριας Ολυμπιάδας Πληροφορικής 2012

Featured

1 Andreas Stavrou – Lemesos

2 Michael Psalios – Larnaca

3 Savvas Mitsikourides – Larnaca

4 Panayiotis Panayiotou – Lemesos

5 Andreas Soteriou – Larnaca

6 Marios Hadjimichael – Leukosia

7 Giorgos Gavriel – Lemesos

8 Constantinos Diomedous – Larnaca

Congratulations to all for making it this far.
The first 4 will represent Cyprus at the International Olympiad in Informatics and at the Balcan Olympiad in Informatics this year.

Πρόγραμμα για αύριο

Featured

Sample Makefile For Competition

Linux Virtual Machine with basic configuration for PSPO.

Tο αυριανό πρόγραμμα της κατασκήνωσης έχει ως εξής

  • 10:00 – 13:00 Γράφοι, BFS/DFS, Shortest Path (Dijkstra), MST   (‘Αννα Φιλίππου)
    (Περίπου σε κάθε ώρα θα γίνεται ένα μικρό διάλειμμα).
  • 13:00 – 15:00 Γεύμα
  • 15:00 – 17:00 Διαίρει και Βασίλευε: Αποδοτικοί αλγόριθμοι ταξινόμησης  (Χρύσης Γεωργίου)
    (ένα διάλειμμα γύρω στις 16:00).

(Ελληνικά) Εκπαιδευτική Κατασκήνωση 2012

Featured

Την περίοδο των διακοπών του Πάσχα και συγκεκριμένα τις ημερομηνίες 19 Απριλίου με 21 Απριλίου, διοργανώσαμε με την βοήθεια του Τμήματος Πληροφορικής του Πανεπιστημίου Κύπρου εκπαιδευτική “κατασκήνωση” για τους μαθητές που διακρίθηκαν στον δεύτερο γύρο της Ολυμπιάδας.

Στόχος της κατασκήνωσης είναι η εκπαίδευση των διακριθέντων και η επιλογή της τελικής τετράδας που θα εκπροσωπήσει την Κύπρο στη Παγκόσμια και στη Βαλκανική Ολυμπιάδα.

Τα μαθήματα θα γίνουν στην Πανεπιστημιούπολη του Πανεπιστημίου Κύπρου και θα υπάρχει μεταφορά από και προς το ξενοδοχείο.

Τα έξοδα διαμονής και μεταφοράς από το ξενοδοχείο στην Πανεπιστημιούπολη δεν θα επιβαρύνουν τους μαθητές.

Παρακαλούνται οι διαγωνιζόμενοι να μελετήσουν τις σημειώσεις των διαλέξεων 1 μέχρι και 9 από την σελίδα http://www2.cs.ucy.ac.cy/~dzeina/courses/epl132/schedule.html ΠΡΙΝ την έναρξη της κατασκήνωσης.

Πρόγραμμα Κατασκήνωσης:
19 Απριλίου:

Ομιλητές: Γιάννος Σαζεΐδης, Δημήτρης Ζεϊναλιπούρ
Πρωινό (ώρα έναρξης 10:00):
1.    Αρχές Προγραμματισμού
- Ανατομία Προγράμματος – ΕΠΛ 132. 4
- Δυναμική Μνήμη – ΕΠΛ 132. 9
- Αποσφαλμάτωση

2.    Linked Lists / Stack / Queue – Linear Data Structures ΕΠΛ 132. 10
// για το σπίτι: Linked List Functions – ΕΠΛ 132. 13, 14

Απόγευμα:
3.    τι είναι δομή / αλγόριθμος
τάξη αλγορίθμου / παραδείγματα χρόνου εκτέλεσης (nested loops, αναζήτηση, τετραγωνικές)

4.    Ανδρομή, Δέντρα και Σωροί – ΕΠΛ 231
// για το σπίτι: ΕΠΛ 132. 16, Ασκήσεις 231, Heap Sort

20 Απριλίου:

Ομιλητές: Άννα Φιλίππου, Χρύσης Γεωργίου
Πρωινό:
5.    Γράφοι , BFS/DFS,MST(Prim|Kruskal), Shortest Path (Dijkstra) – ΕΠΛ 231.
// για το σπίτι: Belman-Ford

Απόγευμα:
6.    Ταξινόμηση με D&Q, Merge Sort/Quick Sort

IEEExtreme Problem Sets

Featured

Following you will find the problem sets that were give on previous competitions. Solving these (or at least as many as possible) will give you a good feeling of what you will be up to on the next competition!

Previous Years Booklets

2006 – Competition 1.0

IEEEXtreme (1.0) 2006 Booklet
IEEEXtreme (1.0) 2006 Booklet #2
IEEEXtreme (1.0) 2006 Booklet #3

2008 – Competition 2.0

IEEEXtreme (2.0) 2008 Booklet
IEEEXtreme (2.0) 2008 Booklet #2
IEEEXtreme (2.0) 2008 Booklet #3

2009 – Competition 3.0

B - Vangelis, the Bear
C - Cube
D - Maze Keys
E - Mobile Primes
F - Olympic City
G - Police Station
H - Dice
I - Proctoring
J - Xtrebble
K - Extra Information K - The Return of the Focus List
L - Quality of Water
Special A - Mineral Water
Special B - Neiman - Marcus $250 Cookies Recipe
Special C - Math Exercise
Special D - Maximum sub sequence sum

2010 – Competition 4.0

IEEEXtreme Rules 4.0 - 2010

PSPO Problem Sets

Featured

You can use the links below to access the following information:

- past problems from previous past competitions
- sample solutions to past problems
Here you can find sample solutions to the programming tasks of the various competition years.
Please note that the code provided for each of the solutions is simply the alogrithm required to solve the problem and will not compile unless it is extended and completed as a full program.
Also note, that the sample solutions provided here are indicative only and other correct solutions may also exist.

Extremely Easy Problems From Hellenico.gr (Greek Only)

Πρόγραμμα Μαθημάτων

Ημέρα Πέμπτη – 19 Απριλίου Παρασκευή – 20 Απριλίου Σάββατο – 21 Απριλίου
10:00 Παρουσίαση Ολυμπιάδας
(Π.Παυλικκάς)
C – Δομή Διακλάδωσης
(Π. Παυλικκάς)
Διαγωνισμός Πληροφορικής Γυμνασίων 2011-2012 Τελική Φάση Κατάταξης
11:00 Ορισμός και ανάλυση του προβλήματος
C – Ακολουθιακή Δομή – Αρχεία
(Μ. Χαριλάου)
Linux – Virtual Machines
(Γ, Μιχαήλ)
12:00 Αλγόριθμοι Ταξινόμησης Bubble Sort – Quick Sort.pdf
(Α. Δημοσθένους)
Αποτελέσματα
13:00 Φαγητό Φαγητό Λήξη Κατασκήνωσης
14:00
15:00 Binary Search
(Π. Ηρακλέους)
Γράφοι (Διάσχιση - Shortest Path - Spanning Trees)
(Π. Ηρακλέους)
16:00 C - Ακολουθιακή Δομή - Δομή Διακλαδωσης
(Π. Παυλικκάς)
17:00 Πρακτική Εξάσκηση Επαναληπτική Δομή
(Π. Παυλικκάς)
18:00 Πρακτική Εξάσκηση
19:00 Αναχώρηση για Ξενοδοχείο Αναχώρηση για Ξενοδοχείο
21:00 Φαγητό στο Ξενοδοχείο Φαγητό στο Ξενοδοχείο

(Ελληνικά) Τελικά Αποτελέσματα Β’ Φάσης Παγκύπριας Μαθητικής Ολυμπιάδας Πληροφορικής

Βάση των κανονισμών της Παγκύπριας Μαθητικής Ολυμπιάδας Πληροφορικής τα τελικά αποτελέσματα του δεύτερου γύρου έχουν ως εξής:

Κατάταξη Χρήστης Τελική Φάση Προκαταρκτική Φάση Τελική Βαθμολογία
1 Giorgos Gavriel  120 210 147
2 Michael Psalios  90 270 144
3 Constantinos Diomedous  130 160 139
4 Andreas Stavrou  90 220 129
5 Marios Hadjimichael  70 250 124
6 Andreas Soteriou  100 170 121
7 Panayiotis Panayiotou  70 220 115
8 Savvas Mitsikourides  90 170 114
9 Rafail Loizou 70 200 109
10 Adamos Ttofari 60 220 108
11 Angelos Pelecanos 80 150 101
12 Andreas Theocharous 40 210 91
13 Rafail Dimitriou 0 210 63
14 Stavros Chryselis 0 180 54

Η τελική βαθμολογία υπολογίζεται ως εξής: 30% Προκαταρκτικής Φάσης + 70% Τελικής Φάσης.
Οι πρώτοι 8 καλούνται στην επόμενη και τελική φάση που αποτελείτε από εκπαιδευτική “κατασκήνωση” και την εξέταση κατάταξης.
Περισσότερες πληροφορίες στους κανονισμούς (http://www.pspo.org.cy/?pageid=120).

(Ελληνικά) Αποτελέσματα Προκρυματικού Β’ Φάσης – 31 Μαρτίου 2012

Οι μαθητές που έχουν επιτύχει βαθμολογία πέραν του 150 (συμπεριλαμβανομένου) καλούντε να συμμετάσχουν στην εξέταση του Β’ Γύρου.

Το εξεταστικό κέντρο για την τελική εξέταση της Β’ φάσης για την Παγκύπρια Μαθητική Ολυμπιάδα Πληροφορικής είναι στη Λεμεσό στο Λύκειο Πολεμιδιών.

Η εξέταση θα ξεκινήσει στις 09:30 και θα έχει δίαρκεια 3 ώρες.

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

Δικαίωμα συμμετοχής έχουν τα άτομα που έχουν πάρει βαθμό ίσο ή μεγαλύτερο με 50% (150/300) στην προηγούμενη φάση. Ακολουθεί ο κατάλογος αποτελεσμάτων:

Κατάταξη Χρήστης Βαθμολογία
1 Michael Psalios 270
2 George Eleftheriou 260
3 Marios Hadjimichael 250
4 Andreas Stavrou 220
5 Panayiotis Panayiotou 220
6 Adamos Ttofari 220
7 Andreas Theocharous 210
8 Giorgos Gavriel 210
9 Rafail Dimitriou 210
10 Rafail Loizou 200
11 Stavros Chryselis 180
12 Savvas Mitsikourides 170
13 Andreas Soteriou 170
14 Constantinos Diomedous 160
15 Angelos Pelecanos 150
16 Stylianos Milisavljevic 90
17 Dimitris Kousoulides 70
18 Arsenios Hadjikyriacou 50

Fast Printing In C/C++

C – Using stdlib.h and fprintf C++ – Using fstream.h and ifstream
#include <stdlib.h>
#include <stdio.h>
#include <limits.h>

#define getHead(X) pegs[(X)][top[(X)]]
#define popHead(X) top[(X)] -= 1;
#define pushHead(X,Y) top[(X)] += 1; pegs[(X)][top[(X)]] = Y;

int main(){
    int disks;
    FILE * fin = fopen("hanoi.in","r");
    fscanf(fin,"%d", &(disks));
    fclose(fin);

    FILE * fout = fopen("hanoi.out","w");
    int i;
    int pegs[3][disks+1];
    for (i = 0; i <= disks; i++){
        pegs[0][i] = 0;
        pegs[1][i] = 0;
        pegs[2][i] = 0;
    }
    int top[3] ={-1,-1,-1};
    for (i = 0; i < 3; i++){
        pushHead(i,INT_MAX);
    }
    for (i = disks; i > 0; i--){
        pushHead(0,i);
    }
    int step = (disks % 2) + 1;

    int topPeg = 0, newPos;
    int PPA, PPB;
    while(1){
        newPos = (topPeg+step)%3;
        fprintf(fout,"%c %c\n", (char)(topPeg+'A'), (char)(newPos+'A'));
        popHead(topPeg);
        pushHead(newPos,1);

        if (top[2] == disks)
            break;

        PPA = (newPos + 1) % 3;
        PPB = (newPos + 2) % 3;
        if (getHead(PPA) < getHead(PPB)){
            pushHead(PPB, getHead(PPA));
            popHead(PPA);
            fprintf(fout,"%c %c\n", (char)(PPA+'A'), (char)(PPB+'A'));
        }else{
            pushHead(PPA, getHead(PPB));
            popHead(PPB);
            fprintf(fout,"%c %c\n", (char)(PPB+'A'), (char)(PPA+'A'));
        }
        topPeg = newPos;
    }
    fclose(fout);
    return 0;
}
#include <iostream>
#include <fstream>
#include <limits.h>

using namespace std;

#define getHead(X) pegs[(X)][top[(X)]]
#define popHead(X) top[(X)] -= 1;
#define pushHead(X,Y) top[(X)] += 1; pegs[(X)][top[(X)]] = Y;

void explore(int disks, ofstream& fout){
    int i;
    int pegs[3][disks+1];
    for (i = 0; i <= disks; i++){
        pegs[0][i] = 0;
        pegs[1][i] = 0;
        pegs[2][i] = 0;
    }
    int top[3] ={-1,-1,-1};
    for (i = 0; i < 3; i++){
        pushHead(i,INT_MAX);
    }
    for (i = disks; i > 0; i--){
        pushHead(0,i);
    }
    int step = (disks % 2) + 1;

    int topPeg = 0, newPos;
    int PPA, PPB;
    while(1){
        newPos = (topPeg+step)%3;
        fout << (char)(topPeg+'A') << " " << (char)(newPos+'A') << endl;
        popHead(topPeg);
        pushHead(newPos,1);

        if (top[2] == disks)
            break;

        PPA = (newPos + 1) % 3;
        PPB = (newPos + 2) % 3;
        if (getHead(PPA) < getHead(PPB)){
            pushHead(PPB, getHead(PPA));
            popHead(PPA);
            fout << (char)(PPA+'A') << " " << (char)(PPB+'A') << endl;
        }else{
            pushHead(PPA, getHead(PPB));
            popHead(PPB);
            fout << (char)(PPB+'A') << " " << (char)(PPA+'A') << endl;
        }
        topPeg = newPos;
    }
}

int main(){
    int disks;
    ifstream fin("hanoi.in");
    fin >> disks;
    fin.close();
    ofstream fout ("hanoi.out");
    explore(disks, fout);
    fout.close();
    return 0;
}
Results:

1 Σωστή απάντηση (100%) 0 δευτερόλεπτα
2 Σωστή απάντηση (100%) 0 δευτερόλεπτα
3 Σωστή απάντηση (100%) 0 δευτερόλεπτα
4 Σωστή απάντηση (100%) 0 δευτερόλεπτα
5 Σωστή απάντηση (100%) 0 δευτερόλεπτα
6 Σωστή απάντηση (100%) 0.004 δευτερόλεπτα
7 Σωστή απάντηση (100%) 0.004 δευτερόλεπτα
8 Σωστή απάντηση (100%) 0.008 δευτερόλεπτα
9 Σωστή απάντηση (100%) 0.04 δευτερόλεπτα
10 Σωστή απάντηση (100%) 0.168 δευτερόλεπτα
Results:

1 Σωστή απάντηση (100%) 0 δευτερόλεπτα
2 Σωστή απάντηση (100%) 0 δευτερόλεπτα
3 Σωστή απάντηση (100%) 0 δευτερόλεπτα
4 Σωστή απάντηση (100%) 0 δευτερόλεπτα
5 Σωστή απάντηση (100%) 0 δευτερόλεπτα
6 Σωστή απάντηση (100%) 0.004 δευτερόλεπτα
7 Σωστή απάντηση (100%) 0.012 δευτερόλεπτα
8 Σωστή απάντηση (100%) 0.044 δευτερόλεπτα
9 Σωστή απάντηση (100%) 0.216 δευτερόλεπτα
10 Υπέρβαση του χρονικού ορίου  Time Error > 1 second

As you can see the two codes are pretty much identical, the biggest difference is the print function yet there is a big gap between the two benchmark execution times.