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());
}
}