Ministero dell'Istruzione, Olimpiadi Italiane di Informatica, AICA

Olimpiadi Italiane di Informatica

Ciao! Complimenti per esserti qualificato per la Selezione Nazionale delle Olimpiadi Italiane di Informatica 2021!

Ti chiediamo di leggere attentamente questa pagina per permetterti di comprendere a pieno le regole e l'ambiente di gara che dovrai usare. Questa pagina rimarrà accessibile anche durante la gara.

Cosa fare per partecipare alla gara

L'ambiente di gara che dovrai usare sarà lo stesso per tutti i partecipanti, e consiste in un'installazione di Linux in macchina virtuale. Avrai quindi bisogno di installare alcuni programmi sul tuo computer.

La macchina virtuale che ti viene fornita dovrà essere eseguita utilizzando VirtualBox. In più, al di fuori della macchina virtuale dovrai eseguire un piccolo programma che ci consente di controllare che tu non acceda ad Internet o cerchi di violare il regolamento. Infine per controllare che tu svolga la gara in un ambiente adatto (senza l'aiuto di nessuno) dovrai partecipare ad una chiamata su Zoom con il supervisore che ti viene assegnato.

Cos'è una macchina virtuale?

Una macchina virtuale (Virtual Machine, VM) si comporta come un computer dentro il computer, ti permette di avere un secondo sistema operativo installato ed isolato da quello che usi di solito. Nel nostro caso sul tuo computer gira normalmente Windows, Linux o macOS, in più, grazie a VirtualBox girerà anche un'installazione di Linux da noi preparata con installato del software che potrebbe non esserci normalmente nel tuo pc! Attenzione però che vale il vice-versa, all'interno della VM potrebbero non esserci installati tutti i programmi che hai installato fuori dalla VM.

In questo modo possiamo distribuire in modo molto semplice a tutti i partecipanti un ambiente uniforme con installati tutti i programmi di cui avete bisogno, più altro software che controlla la correttezza della gara e che impedisce l'accesso ad Internet.

Segui attentamente questi passaggi per preparare tutto quello di cui hai bisogno per la practice (la gara di prova per controllare che tutto funzioni a dovere) e per la gara ufficiale.

1. Software da scaricare

Avrai bisogno di tutti questi software per poter svolgere la gara:

2. Installazione di VirtualBox

Una volta installato, se sei su Windows o su macOS dovrai anche seguire questi passaggi.

2.2 Installare il VirtualBox Extension Pack (Windows / macOS)

Dal sito dove hai scaricato VirtualBox scarica anche il VirtualBox 6.1.28 Oracle VM VirtualBox Extension Pack (è un file .vbox-extpack indipendente dal sistema operativo che stai usando).

Installa il pacchetto andando su FilePreferenzeEstensioni, ed aggiungendolo all'elenco.

3. Importazione della macchina virtuale
  • Scarica il file OII2021.ova (trovi i link al punto 1)
  • Avvia VirtualBox e seleziona FileImporta applicazione virtuale...
  • Seleziona il file OII2021.ova scaricato
  • Ora puoi ottimizzare i parametri della macchina virtuale seguendo queste regole:
    • CPU: Il valore minimo supportato è 2, puoi provare ad alzarlo in base a quanti core ha il tuo PC.
    • RAM: Il valore minimo supportato è 3072MB (3GB). Se il tuo PC ha più di 4GB di RAM puoi aumentare questo valore, ma assicurati di lasciare abbastanza RAM al tuo sistema operativo. Se hai 8GB di RAM ti consigliamo di non superare 6144MB, se hai più di 8GB di RAM puoi impostare valori anche più elevati, anche se non è necessario.
    • Puoi anche scendere al di sotto del valore minimo supportato, però non garantiamo che tutti i programmi continuino a funzionare correttamente.
    • Lascia invariate tutte le altre opzioni.
  • L'importazione potrebbe richiedere anche diversi minuti.
4. Avvio del sistema di proctoing (oii_proctor)
5. Utilizzo di Zoom

Zoom è una famosa applicazione di videochiamata che ci permetterà di controllare che tu svolga la gara in autonomia e senza aiuti esterni. Dovrai condividere solo la webcam e il microfono e non dovrai mai disattivarli fino alla fine della gara.

  • Scarica ed installa Zoom per il tuo PC (il link è al punto 1).
  • Avvia Zoom e registrati.

Visto che il giorno della gara non puoi aprire un browser, invece che fornirti il link per entrare nella riunione ti verrà dato il Meeting ID (un numero di 10 cifre).

  • Dopo aver avviato Zoom premi su Join
  • Inserisci il Meeting ID che ti verrà comunicato la mattina della gara, e il tuo nome e cognome.
  • Non mettere la spunta su Turn off my video (dovrai avere la webcam accesa), e poi premi su Join.
  • Nella finestra che si apre seleziona Join with Computer Audio, puoi anche fare un test per verificare che webcam e microfono funzionino.
  • Assicurati di avere il microfono e la webcam attivi.

Come si svolge la gara

Perché la practice è importante?

La practice è una gara di prova, i cui risultati non conteranno in alcun modo nella classifica finale, che serve a tutti per controllare che il sistema funzioni correttamente il giorno della gara. È quindi davvero importante che tutti i partecipanti accedano alla practice e la usino per fare pratica con le modalità di gara e prendano confidenza con la macchina virtuale.

Naturalmente anche noi dello staff beneficiamo molto da questa practice, ci permette di individuare i problemi prima della gara (e si spera anche di risolverli prima della gara!)

In altre parole, partecipa alla practice! I problemi sono originali e sono preparati dalla squadra che ha partecipato quest'anno alle IOI! Un ottimo allenamento prima della gara ufficiale.

Cos'è il grader?

Da molti anni ormai alle nazionali i task utilizzano i grader. A lato pratico il grader permette di separare la lettura dell'input e la scrittura dell'output dalla tua soluzione. Questo ha due grossi vantaggi:

  • Non devi preoccuparti della lettura dell'input: ti forniremo noi grader.cpp che legge l'input e chiama il tuo codice con i dati già letti. Così facendo possiamo implementare molto semplicemente meccanismi sofisticati per leggere l'input molto velocemente, e uniformare tra tutti i partecipanti i tempi di lettura.
  • Ci permette di nascondere il file di input consentendoci di fare problemi interattivi, in cui c'è una comunicazione tra grader e soluzione.

Quindi le soluzioni che dovrai scrivere non dovranno includere la funzione main, ma solo le funzioni richieste dal problema (che sono descritte nel testo del problema). Per compilare correttamente la tua soluzione e il grader ci sono diversi modi, in una delle sezioni finali di questa guida ci sono delle brevi guide per i programmi consigliati. Ti consigliamo di sfruttare la practice per impratichirti anche con questo aspetto di gara.

Checklist practice
  • La practice sarà disponibile dal 13 novembre al 15 novembre. Potrai svolgere la gara di prova quando vuoi, per quanto tempo vuoi (la practice non ha il limite delle 5 ore). Ovviamente se hai dei dubbi sui problemi potrai fare delle domande direttamente nel sistema di gara, ma durante la notte non è detto che ci sia qualcuno sveglio a risponderti!
  • Avvia oii_proctor fuori dalla macchina virtuale e assicurati che accetti le tue credenziali.
  • Avvia la macchina virtuale di gara e mettila a schermo intero.
  • Esegui il login nella finestra che si apre all'avvio.
  • Assicurati che nella barra in alto ci sia il tuo nome, vorrà dire che sei connesso correttamente alla rete e che le credenziali inserite sono state accettate (potrebbe volerci qualche minuto da quando hai inserito username e password).
  • Apri un browser (Firefox è consigliato) e visita gara.oii.olinfo.it. Nota che questa pagina è visibile solo nella macchina virtuale dopo aver fatto correttamente il login.
  • Non uscire mai dalla macchina virtuale e non minimizzarla MAI. Farlo durante la gara ufficiale è motivo di squalifica.
Checklist gara
  • La gara ufficiale è il 16 novembre 2021.
  • Ore 13:00: avvio anticipato
    • Accendi il computer e chiudi tutti i programmi aperti (inclusi browser, applicazioni per la musica (incluso Spotify), applicazioni di messaggistica, giochi, applicazioni di videoconferenza, tutto il chiudibile)
    • Avvia l'applicazione di Zoom, alle 13:40 lo userai per entrare nella videochiamata.
    • Trascrivi l'ID della chiamata di Zoom e il PIN su un foglio di carta. Ti servirà dopo per connetterti senza dover aprire un browser.
    • Avvia oii_proctor ed effettua il login. Assicurati che le credenziali vengano accettate.
    • Avvia VirtualBox e apri la macchina virtuale. Esegui il login ed assicurati che il tuo nome compaia nella barra in alto.
    • A questo punto non è fondamentale che la macchina virtuale sia massimizzata, ti verrà comunicato quando dovrai avercela massimizzata e da quel momento non dovrai uscire fino alla fine della gara.
    • Tutti i file che hai scritto nella macchina virtuale verranno salvati dallo staff e rimossi dalla macchina virtuale. In gara non potrai accederci. A gara finita lo staff ti darà accesso ai file salvati nella practice e in gara.
    • La configurazione dei programmi verrà resettata, avrai qualche minuto di tempo prima dell'inizio della gara per riconfigurarli.
    • Non puoi fare nulla nella macchina virtuale fino alla comunicazione del tuo supervisore.
    Da questo momento è importante che la macchina virtuale non venga chiusa. Durante quest'ora lo staff si assicurerà che tutti siano connessi e che non ci siano problemi. Assicurati che il PC non si sospenda per inattività!
  • Ore 13:40: ingresso nella videochiamata
    • Minimizza la macchina virtuale ed entra nella chiamata di Zoom.
    • Ascolta attentamente le istruzioni del supervisore, quando te lo comunicherà dovrai mettere la macchina virtuale a schermo intero e non potrai uscirci fino alla fine della gara.
    • In contemporanea con tutti, il tuo supervisore ti avviserà che puoi usare la macchina virtuale, in questi minuti prima della gara potrai riconfigurare i programmi e scrivere del codice (se lo volessi).
  • Ore 14:00: inizio della gara
    • La gara inizia (salvo ritardi), da questo momento all'indirizzo gara.oii.olinfo.it potrai accedere ai problemi ed inviare le tue soluzioni.
  • Ore 19:00: fine della gara
    • La gara finisce (salvo ritardi). Nota però che se ci sono problemi tecnici alcuni studenti potrebbero avere del tempo aggiuntivo. Ti chiediamo quindi di non parlare dei problemi in forma pubblica per almeno un'ora dalla fine della gara.
    • NON SPEGNERE LA MACCHINA VIRTUALE! Lo staff dovrà assicurarsi di prendere tutti i file dalla tua macchina virtuale, se la spegni potresti venir squalificato! Attendi che il tuo supervisore ti avvisi che puoi uscire dalla macchina virtuale.
Lista di divieti
Vogliamo ricordarti quali sono alcuni dei comportamenti assolutamente vietati, che potrebbero portarti ad una squalifica. L'elenco non è completo, il comitato si riserva di squalificare in caso di comportamenti antisportivi.
  • Non puoi usare un secondo monitor, dovrai usare un solo schermo per tutta la gara, se hai dei monitor secondari questi devono essere spenti.
  • Durante la gara non puoi usare Internet in alcun modo, né all'interno della macchina virtuale, né con altri dispositivi esterni.
  • Durante la gara non puoi uscire dalla modalità a schermo intero della VM né usare qualunque altro dispositivo elettronico non autorizzato.
  • Non puoi usare alcun tipo di appunto scritto prima della gara, né libro, né qualunque tipo di materiale non autorizzato.
  • Durante la gara non puoi comunicare in alcun modo con chiunque al di fuori dallo staff, incluso "a voce".
  • Non devi provare a bypassare i sistemi di sicurezza della macchina virtuale, né provare ad ottenere privilegi superiori all'utente fornito. Né prima, né durante la gara.
  • Non devi modificare file al di fuori della tua home.
  • Non provare ad attaccare il server di gara in alcun modo.

Come utilizzare la macchina virtuale

Come avviare la macchina virtuale
  • Apri VirtualBox
  • Fai doppio-click su OII2021 sulla sinistra.
  • Ti si aprirà una finestra con un'istanza di Linux che si avvia.
  • Dopo qualche secondo dovresti vedere il desktop della macchina virtuale.
  • Ora la macchina virtuale è avviata, cliccando all'interno della finestra verranno catturati mouse e tastiera: i tasti che premerai sono interpretati dalla macchina virtuale. Per riacquistare il controllo della tastiera è sufficiente premere il tasto Control sulla destra della tastiera.
  • Appena avvii la macchina virtuale ti verrà mostrata una finestra di login: la prima cosa che devi fare è inserire le credenziali che hai ricevuto per mail.

Dopo aver fatto il login potrai usare liberamente la macchina virtuale ed accedere alla piattaforma di gara. Senza aver fatto il login non funziona quasi nulla!

Nella barra in alto, dopo qualche secondo dal login, dovrebbe comparire il tuo nome e delle informazioni sulla gara in corso (come il tempo rimanente). Lì verranno mostrati anche eventuali errori di connessione, se dovessi vederne qualcuno in gara è possibile che la tua connessione ad Internet si sia interrotta.

Ho fatto il logout per sbaglio!

Se dovessi aver premuto per errore Termina sessione di oii... ti chiediamo di riavviare la macchina virtuale. Presta la massima attenzione di non farlo durante la gara!

Cosa fare se ci sono degli errori nella barra in alto

Nella macchina virtuale è presente un sistema automatico che controlla che sia presente la connessione ad Internet. Se dovesse rilevare dei problemi (e segnalarteli nella barra in alto) segui queste istruzioni:

  • Mantieni la calma!
  • NON USCIRE DALLA MACCHINA VIRTUALE!
  • Il tuo supervisore proverà a contattarti a voce nella chiamata con Zoom.
  • Se tu non dovessi rispondere (magari perché effettivamente non ti funziona Internet) ti contatterà telefonicamente. Assicurati quindi di avere il telefono acceso vicino alla postazione.
  • Se il supervisore non dovesse contattarti entro qualche minuto sei autorizzato ad usare il telefono esclusivamente per contattare il supervisore nelle modalità accordate prima dell'inizio della gara.
Cosa fare se la macchina virtuale non dovesse avviarsi

Se la macchina virtuale non dovesse avviarsi è possibile che il tuo computer non sia configurato correttamente per la virtualizzazione

Se stai usando Windows è possibile che tu abbia Hypervisor abilitato (ad esempio se stai utilizzando WSL). Per disabilitarlo apri un terminale con i privilegi di amministratore ed esegui il comando bcdedit /set hypervisorlaunchtype off, una volta fatto bisogna riavviare il computer. Al termine della gara potrai abilitare nuovamente Hypervisor con il comando bcdedit /set hypervisorlaunchtype auto.

Se la macchina virtuale non funziona ancora, è possibile che tu non abbia abilitato le opzioni di virtualizzazione nel BIOS. Per abilirarle devi entrare nel BIOS del computer, se non sai come accedere al BIOS puoi seguire questa guida. Una volta entrato nel BIOS devi cercare ed abilitare un'opzione chiamata VT-x (a volte chiamata anche AMD-V, Intel Virtualization Technology, o qualunque cosa faccia riferimento alla virtualizzazione). Senza quell'opzione abilitata la macchina virtuale potrebbe non avviarsi dando un errore abbastanza criptico.

Come attivare la modalità a schermo intero
  • Una volta avviata la macchina virtuale, per attivare la modalità a schermo intero è sufficiente usare la combinazione di tasti: Ctrl destro + F (oppure VisualizzaModalità schermo intero).
  • A gara finita, per uscire dalla modalità a schermo intero è sufficiente ripremere Ctrl destro + F.
Alle prime armi con Linux?

Ecco una semplice introduzione base all'utilizzo della macchina virtuale. Ti consigliamo di utilizzarla e prenderci mano prima della gara, non è difficile e la pratica aiuta molto!

Dopo aver effettuato il login vedrai il Desktop, funziona esattamente come quello di Windows o mac OS: puoi creare cartelle e file usando il tasto destro del mouse. Nel Desktop troverai anche alcune delle applicazioni installate, puoi aprirne una facendo doppio-click.

Se non hai mai usato nessuno degli editor che vedi ti consigliamo di usare CodeLite oppure Geany. Nella sezione seguente trovi una mini-guida per iniziare!

Software consigliato

Ambiente consigliato

Come browser ti consigliamo di usare Firefox, sembra avere prestazioni migliori di Chromium all'interno della macchina virtuale.

Se su Windows eri solito ad usare Dev-C++ ti consigliamo Geany o CodeLite.

Ti sconsigliamo di usare Code::Blocks, potrebbe avere problemi di stabilità, consigliamo CodeLite (molto simile) oppure Geany (più semplice).

CLion è estremamente pesante se confrontato con gli altri IDE, ti sconsigliamo fortemente di utilizzarlo a meno che tu non disponga di un computer sufficientemente potente.

Se la tua macchina virtuale ha solo 3GB di RAM i seguenti programmi potrebbero avere problemi di memoria, cerca di evitarli: CLion, Eclipse.

Come usare CodeLite
Guida
Come usare Geany
Guida
Come usare Atom
Guida
Come usare Visual Studio Code
Guida
Come compilare da terminale
Guida

Elenco software installato

Qui trovi l'elenco completo di tutto quello che c'è installato nella macchina virtuale. Ti riassumiamo qui l'elenco dei software che potrebbero interessarti: