Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- 17ος Πανελλήνιος Διαγωνισμός Πληροφορικής
- (Σχολικό Έτος 2004-5)
- Θέμα Α' Φάσης: Δέκαθλο
- Ένα από τα πλέον όμορφα και ταυτόχρονα δυναμικά Ολυμπιακά Αγωνίσματα είναι το Δέκαθλο. Οι δεκαθλητές, δοκιμάζονται κυριολεκτικά σε δέκα αγωνίσματα στίβου. Στους Ολυμπιακούς Αγώνες της Αθήνας οι δεκαθλητές αγωνίστηκαν σε αυτά τα αγωνίσματα, στις 23 & 24 Αυγούστου 2004. Η τελική κατάταξη προέκυψε από το άθροισμα των βαθμών που συγκέντρωσαν οι αθλητές σε κάθε αγώνισμα. Για λόγους καθαρά στατιστικής, σε κάθε αγώνισμα βγήκε ένας «νικητής» αγωνίσματος. Στο άλμα επί κοντώ, ο νικητής προκύπτει από τους αθλητές που υπερπήδησαν το ίδιο ύψος με μικρότερο αριθμό συνολικών προσπαθειών. Αθλητές με ίδιο αριθμό προσπαθειών που υπερπήδησαν το ίδιο ύψος ανακηρύσσονται εξ ίσου νικητές.
- Να γραφεί πρόγραμμα το οποίο θα δέχεται για είσοδο αρχείο εισόδου txt με τον αριθμό των αξιολογούμενων αθλητών, με βάση τη σειρά συμμετοχής στο άθλημα και για κάθε αθλητή, περιέχει το τελικό ύψος υπερπήδησης και τον αριθμό των συνολικών προσπαθειών. Το πρόγραμμα θα επιστρέφει σε αρχείο εξόδου txt τον αριθμό των νικητών του αγωνίσματος και τη σειρά συμμετοχής, που αυτός / αυτοί είχε / είχαν.
- ΕΙΣΟΔΟΣ
- Το αρχείο εισόδου θα έχει το όνομα dekathlo.txt και την παρακάτω δομή: Η πρώτη γραμμή θα έχει ένα ακέραιο αριθμό Ν που θα δίνει τον αριθμό των αθλητών που συμμετείχαν. Οι επόμενες Ν γραμμές, θα περιέχουν από δύο ΥΝ, ΠΝ ακέραιους αριθμούς χωριζόμενους από ένα κενό. Ο πρώτος ακέραιος κάθε γραμμής αντιστοιχεί στο ύψος σε εκατοστά που υπερπήδησε κάθε αθλητής και ο δεύτερος ακέραιος στον αριθμό των προσπαθειών του. Η σειρά που περιέχονται οι αριθμοί στο αρχείο, είναι η σειρά συμμετοχής τους στο αγώνισμα.
- ΕΞΟΔΟΣ
- Το αρχείο εξόδου θα έχει το όνομα nikites.txt και την παρακάτω δομή. Η πρώτη γραμμή περιέχει έναν ακέραιο Χ που θα δίνει το πλήθος των νικητών του αγωνίσματος. Οι επόμενες Χ γραμμές θα περιέχουν από έναν ακέραιο Ι (0 ≤ Χ ≤ Ν) που θα αντιστοιχεί στη σειρά συμμετοχής του κάθε νικητή.
- ΠΑΡΑΔΕΙΓΜΑΤΑ:
- dekathlo.txt
- 10
- 590 9
- 595 12
- 585 6
- 575 9
- 595 9
- 590 12
- 585 6
- 590 12
- 585 9
- 0 3
- nikites.txt
- 1
- 5
- -
- dekathlo.txt
- 8
- 570 9
- 0 3
- 585 6
- 575 9
- 575 9
- 585 6
- 570 12
- 585 9
- nikites.txt
- 2
- 3
- 6
- Περιορισμοί:
- 1 < Ν ≤ 128, 400 ≤ ΥΝ ≤ 650 (0: οι άκυρες), 3 ≤ ΠΝ ≤ 30
- */
- #include <stdio.h>
- #ifndef DEKATHLO
- #define DEKATHLO
- #define ZERO 0
- #define READ "r"
- #define WRITE "w"
- #define NUMBER "%hhu"
- #define NUMBERS "%hu %hu"
- #define NUMBER_LF "%hhu\n"
- #define IN "dekathlo.txt"
- #define OUT "nikites.txt"
- #define ATHLETES_LIMIT 0x80
- #endif
- FILE *fd;
- unsigned char id, athletes, winners[-~ATHLETES_LIMIT];
- unsigned short top, gun, min, max;
- int main ( int argc , char *argv[] ) {
- for ( fscanf ( fd = fopen ( IN , READ ) , NUMBER , &athletes ) ; id++ < athletes ; )
- fscanf ( fd , NUMBERS , &top , &gun ),
- (( max < top ) || (( max == top ) && ( min > gun ))) && (( *winners = ZERO ) , ( max = top ) , ( min = gun )),
- (( max ^ top ) || ( min ^ gun )) || ( winners [ ++*winners ] = id );
- fclose ( fd );
- for ( fprintf ( fd = fopen ( OUT , WRITE ) , NUMBER_LF , *winners ), id = ZERO ; id++ < *winners ; )
- fprintf ( fd , NUMBER_LF , winners [ id ] );
- fclose ( fd );
- return ZERO;
- }
Add Comment
Please, Sign In to add comment