Category Archives: GATOR

Gara di Allenamento Tor Vergata

Cerca le somme

Filippo, il nuovo assistente del sindaco di Roma, è molto preoccupato.
Alla prima riunione in cui ha partecipato, si sono discusse le varie voci del bilancio delle olimpiadi.
Lui ha trascritto tutti questi numeri su un foglio, ma poi lo ha lasciato nei pantaloni che sono finiti in lavatrice.
Per fortuna non tutto è perduto: si intravedono le cifre, e lui si ricorda qual era il totale del bilancio previsto per le olimpiadi.

Il vostro compito è quello di aiutare Filippo a capire quanti sono i modi di comporre le cifre, nel modo descritto di seguito, per poter ricostruire correttamente il bilancio delle olimpiadi.
Dato il foglio con le cifre, vogliamo inserire alcuni segni + in modo che il risultato delle operazioni di somma sia quello che si ricorda Filippo.

Ad esempio, data la sequenza di cifre decimali

1 2 3 4 5 6 7

possiamo inserire quattro operatori + in modo tale che il risultato delle somme sia uguale a 100.
In questo particolare caso una possibile soluzione è

1+23+4+5+67

Aiuta Filippo a trovare tutti i possibili modi di ottenere la somma data.

Dati di input

Il file input.txt contiene tre righe di testo.

  • Nella prima riga c’è un singolo numero intero positivo N che ci dice quante sono le cifre decimali nel foglio di Filippo.
  • Nella seconda riga del file vi sono le cifre decimali separate tra loro da spazi.
  • Nella terza riga del file c’è il totale del bilancio, ovvero il valore che deve essere ottenuto con le operazioni di somma.

Dati di output

Il file output.txt contiene una riga per ciascuna soluzione esatta trovata; la riga contiene le posizioni dei segni + separate da spazi.
Se una posizione ha valore i, significa che il corrispondente segno + segue la i-esima cifra.

Assunzioni

  • La stessa cifra può apparire più volte nella sequenza.
  • Vengono date al più N=9 cifre.
  • È garantito che esiste almeno una soluzione.

Esempi di input/output

input.txt output.txt
71
2 3 4 5 6 7
100
1 3 4 5
1 2 4 6
82
1 3 4 5 1 8 9
105
1 2 3 4 5 6
1 2 4 6 7
95
4 3 2 1 2 3 4 5
101
1 2 3 5 7
1 2 4 6 7
1 3 4 5 6 7
1 3 4 6 8
2 3 4 5 6 8
1 3 5 7 8
2 4 5 6 7 8


Fuorigioco

Il fuorigioco è una delle regole più discusse del gioco del calcio, e spesso è complicato riuscire a capire se un giocatore è partito in posizione regolare.
Grazie alle nuove tecnologie, viene scattata una immagine in ogni secondo della partita, localizzando le posizioni dei giocatori in una griglia, e siamo in grado di dire quando è partito il pallone con una precisione del decimo di secondo.

Per esempio, nell’immagine qui sotto possiamo vedere una tipica situazione di gioco, con due attaccanti (rappresentati dalle X) che avanzano, e due difensori (rappresentati dai cerchi O) che cercano di metterli in fuorigioco.
A fianco a ogni giocatore vediamo la sua posizione, in un sistema di coordinate X, Y, in metri, che ha la sua origine nella bandierina del calcio d’angolo in basso a sinistra.

fuorigioco

Il vostro compito è quello di scrivere un programma che, ricevute in ingresso le posizioni dei giocatori nelle due immagini, scattate prima e dopo il lancio, e a quale decimo di secondo (compreso tra 1 e 9 inclusi) è avvenuto il lancio, calcoli se era fuorigioco oppure no.

Per valutare la posizione di un giocatore sull’asse Y al decimo di secondo d, con 1 ≤ d ≤ 9 è possibile usare la formula seguente.

fuorigioco

In particolare, se la applichiamo alle posizioni dei giocatori in figura, e riportate nella seguente tabella:

Giocatore Posizione iniziale Posizione finale
Attaccante 1 (21, 27) (27, 18)
Attaccante 2 (51, 24) (45, 15)
Difensore 1 (24, 12) (21, 21)
Difensore 2 (42, 12) (42, 21)

possiamo verificare che, nel caso di d=7, l’attaccante 2 è in fuorigioco (si trova ad y=17, 7, mentre i due difensori sono entrambi a y=18, 3.

Invece, ad esempio, nel caso di d=5, i difensori (entrambi a y=16,5) tengono in gioco entrambi gli attaccanti.

Dati di input

Il file input.txt contiene 1+A+D righe.

  • La prima riga contiene tre interi separati da spazio:
    • d, il decimo di secondo in cui avviene il lancio,
    • A, il numero di attaccanti, e
    • D, il numero di difensori.
  • Le successive A righe contengono, per ognuno degli attaccanti, quattro interi separati da spazio: le coordinate iniziali e finali.
  • Le ultimi D righe contengono, per ognuno dei difensori, quattro interi separati da spazio: le coordinate iniziali e finali.

Dati di output

Nel file output.txt dovrai stampare un solo carattere, indicante se c’era o meno fuorigioco; i valori ammessi sono:

  • F: fuorigioco;
  • R: azione regolare.

Assunzioni

  • 1 ≤ A, D ≤ 3
  • Come da regolamento del calcio, se attaccante e difensore sono alla stessa altezza (intesa come coordinata y) al momento del lancio, la posizione è regolare.
  • 0 ≤ X ≤ 84, 0 ≤ Y ≤ 40 per le posizioni di tutti i giocatori nel campo.

Esempi di input/output

input.txt output.txt
7 2 2
21 27 27 18
51 24 45 15
24 12 21 21
42 12 42 21
F
5 2 2
21 27 27 18
51 24 45 15
24 12 21 21
42 12 42 21
R


Classifica

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



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

Cannoniere

Vincere la classifica dei cannonieri è sempre una grande soddisfazione per un attaccante, e in particolare vincerla ai mondiali è la massima aspirazione!
Il vostro compito è quello di calcolare il vincitore della classifica cannonieri, a partire da un elenco di tutti i marcatori, in ordine sparso, in tutte le partite.
Ogni giocatore è rappresentato da un numero intero, che lo identifica, e in ogni riga del file ci sono due interi: il numero che rappresenta il giocatore e il numero di reti che ha segnato.

Per esempio, se il file contiene le seguenti righe (la prima riga contiene un solo intero, il numero di righe rimanenti del file):

7
23 2
11 1
67 3
45 1
11 2
23 1
11 1

il vostro programma dovrà stampare, in una riga,

11 4

ovvero l’identificativo del capocannoniere e il numero totale dei suoi gol.

Dati di input

Come detto in precedenza, nel file input.txt sono presenti N+1 righe di testo:

  • nella prima c’è un singolo numero intero positivo N che ci dice quanti sono le linee dell’elenco dei marcatori;
  • le restanti N righe del file contengono due coppie di interi (positivi):
    • G, il numero che rappresenta il giocatore,
    • e R il numero di reti che ha segnato (in una data partita).

Dati di output

Nel file output.txt dovrai stampare due interi positivi:

  • il numero che rappresenta il cannoniere,
  • e il numero di reti totali che ha segnato.

Assunzioni

  • 1 ≤ N ≤ 50
  • 1 ≤ G ≤ 100

Esempi di input/output

input.txt output.txt
7
23 2
11 1
67 3
45 1
11 2
23 1
11 1
11 4
5
10 3
9 1
10 1
7 2
10 1
10 5