Tehtävissä ohjelman on annettava oikea tuloste standarditulosteeseen standardisyötteestä annetulle syötteelle. Lisäksi tulee noudattaa tehtävässä annettuja aika- ja muistirajoja. CSES:n Submissions-sivulla kerrotaan jokaisen lähetyksen tulos, joka on yksi seuraavista:
Voit käyttää seuraavia ohjelmointikieliä:
CSES-nimi | Nimi | Kääntäjä | Liput |
---|---|---|---|
c++ | C++11 | g++ 4.8.2 | -std=gnu++0x -Wall -O2 |
java | Java 7 | OpenJDK javac 1.7.0_65 |
C++ ajetaan ympäristössä, jossa muut kuin standardisyötteeseen ja -tulosteeseen tarvittavat syscallit on estetty. Java ajetaan tyhjällä security policylla. Molempien hiekkalaatikoiden rikkominen johtaa RUNTIME ERRORiin.
C++:ssa muistiraja toteutetaan komennolla ulimit -v 150000
,
ja pinon kokorajoitus on poistettu komennolla ulimit -s unlimited
.
Javassa muistirajat annetaan lipuilla -Xmx150m -Xss16m
.
Huomaa, että voit lähettää myös C-koodia käännettäväksi C++-koodina.
C++:n cin ja cout nopeutuvat huomattavasti, kun poistaa niiden synkkauksen C:n stdio-kirjaston kanssa lisäämällä main-funktion alkuun rivin cin.sync_with_stdio(false)
. Joissain tehtävissä aikaraja saattaa ylittyä, jos näin ei tee.
#include <iostream> using namespace std; int main() { cin.sync_with_stdio(false); // ratkaise tehtävä tähän }
import java.util.*; import java.io.*; public class Ratkaisu { public static void main(String[] args) { IO io = new IO(); String a = io.next(); // Lukee seuraavan välein erotellun merkkijonon. int b = io.nextInt(); // Lukee seuraavan välein erotellun int-kokonaisluvun. long c = io.nextLong(); // Lukee seuraavan välein erotellun long-kokonaisluvun. double d = io.nextDouble(); // Lukee seuraavan välein erotellun double-liukuluvun. // Toimii kuten System.out.println. io.println("Annoit syötteenä " + a + " " + b + " " + c + " " + d); io.close(); // TÄYTYY KUTSUA, muuten tuloste voi jäädä kirjoittamatta } } class IO extends PrintWriter { private BufferedReader r; private StringTokenizer s; public IO() { super(new BufferedOutputStream(System.out)); r = new BufferedReader(new InputStreamReader(System.in)); } public String nextLine() { String s = null; try { s = r.readLine(); } catch (Exception e) {} if(s == null) throw new NoSuchElementException(); return s; } public String next() { while (s == null || !s.hasMoreElements()) { s = new StringTokenizer(nextLine()); } return s.nextToken(); } public int nextInt() { return Integer.parseInt(next()); } public long nextLong() { return Long.parseLong(next()); } public double nextDouble() { return Double.parseDouble(next()); } }