Come se le olimpiadi non bastassero, Roma ospiterà il campionato mondiale di calcio.
I vertici dell’amministrazione vogliono che tutto sia perfetto, quindi hanno richiesto che venga scritto un programma che determina (data la lista delle partite giocate) la squadra vincente.
In un campionato del mondo i gironi sono composti da N squadre (N è un numero pari compreso tra 4 e 20, estremi inclusi) e queste squadre devono scontrarsi tra loro una e una sola volta.
Se una squadra vince ottiene 3 punti, se pareggia 1, se perde 0.
Il regolamento stabilisce che può vincere al massimo una squadra, quindi l’amministrazione ha deciso che a parità di punteggio vincerà la squadra con numero più basso.
Dati di input
Nella prima riga del file è presente il numero N di squadre presenti nel girone.
Ogni squadra è rappresentata con un numero da 1 a N.
Le righe successive rappresentano tutte le partite che si sono svolte.
Ciascuna riga viene presentata con 4 interi separati da spazio, rispettivamente:
- s1, s2, le due squadre che hanno giocato la partita;
- g1, g2, il numero di gol segnati da ciascuna squadra.
Dati di output
Il file output.txt contiene due interi separati da spazio, rispettivamente:
- il numero della squadra vincente,
- il numero di punti totalizzati dalla squadra vincente.
Assunzioni
- 4 ≤ N ≤ 20
Esempi di input/output
input.txt | output.txt |
4 1 2 2 0 3 4 1 1 1 3 1 1 2 4 0 0 1 4 2 2 2 3 0 0 |
1 5 |
/* www.valcon.it GATOR 2015 - Classifica */ #includeint punti_squadra[21]; // già inizializzato a 0 int main() { int N, s1,s2,g1,g2; int squadra, vincitrice, punti_vinc; FILE* fin =fopen( "input.txt","r"); FILE* fout=fopen("output.txt","w"); fscanf(fin, "%d", &N); do // per ogni partita { fscanf(fin, "%d %d %d %d", &s1, &s2, &g1, &g2); if(g1 > g2) punti_squadra[s1] += 3; else if(g1 == g2) { punti_squadra[s1] += 1; punti_squadra[s2] += 1; } else punti_squadra[s2] += 3; } while(!feof(fin)); vincitrice=1; punti_vinc=punti_squadra[1]; for(squadra=2; squadra <= N; squadra++) // per ogni squadra if(punti_squadra[squadra] > punti_vinc) { vincitrice=squadra; punti_vinc=punti_squadra[squadra]; } fprintf(fout, "%d %d\n", vincitrice, punti_vinc); return 0; }
/* www.valcon.it GATOR 2015 - Classifica */ #include#include using namespace std; int punti_squadra[21]; // già inizializzato a 0 int main() { int N, s1,s2,g1,g2; ifstream fin ( "input.txt"); ofstream fout("output.txt"); fin >> N; do // per ogni partita { fin >> s1 >> s2 >> g1 >> g2; if(g1 > g2) punti_squadra[s1] += 3; else if(g1 == g2) { punti_squadra[s1] += 1; punti_squadra[s2] += 1; } else punti_squadra[s2] += 3; } while(!fin.eof()); int vincitrice=1; int punti_vinc=punti_squadra[1]; for(int squadra=2; squadra <= N; squadra++) // per ogni squadra if(punti_squadra[squadra] > punti_vinc) { vincitrice=squadra; punti_vinc=punti_squadra[squadra]; } fout << vincitrice << " " << punti_vinc; return 0; }
Il correttore ufficiale dà 80/100 perché alcuni file di test hanno un new line dopo l'ultima partita e il ciclo while(!fin.eof()) fa un passo in più.
Si può correggere con un controllo aggiuntivo: se dopo una lettura non è finito fuori allora prende in considerazione i dati
fin >> s1; if(!fin.eof()) { fin >> s2 >> g1 >> g2; ... }