Tulostaminen
Yleinen tapa rakentaa interaktiivisia tehtäviä on standardisyötevirran ja -tulostevirran kautta (niin kutsutut stdin
ja stdout
).
Tällaisissa kommunikaatiotehtävissä ratkaisusi "keskustelee" kisajärjestelmän kanssa virtojen kautta tulostamalla kysymyksiä ja lukemalla niiden vastauksia
Tulostamisen jälkeen on tärkeä muistaa tyhjentää (flush) tulostepuskuri, jotta tuloste varmasti saapuu arvostelijalle ennen kuin ohjelma yrittää lukea vastausta. C++:ssa std::endl
:n tulostaminen std::cout
:lla tulostaa rivinvaihdon ja tyhjentää puskurin.
cout << endl;
C-tyylisellä tulosteella tulostepuskurin saa tyhjennettyä koodirivillä:
fflush(stdout);
Esimerkkitehtävä
Virtahaku-tehtävässä, jossa tehtävänä on etsiä 30:n kyselyn avulla luku 1 \le x \le 10^9, tuloste ja syöte -ketju voisi näyttää tältä:
? 4 QAQ ? 6 10-4 ! 5
Jokaiseen kyselyyn arvostelija vastaa 10-4
, jos annettu luku on x:ää suurempi, muutoin QAQ
.