Tehtävät
Jokaisessa tehtävässä on tarkoituksena laatia ohjelma, joka lukee syötteen, ratkaisee ongelman tehokkaasti ja tulostaa vastauksen.
Tehtävän yhteydessä on ilmoitettu, paljonko aikaa ja muistia ohjelma saa käyttää yhden syötteen käsittelyyn.
Kun lähetät koodin palvelimelle, sitä testataan joukolla testitapauksia. Saat pisteitä koodin toimivuuden ja tehokkuuden perusteella.
Voit lähettää samaan tehtävään useita koodeja. Kokonaispisteisiin vaikuttaa koodi, joka tuottaa korkeimman pistemäärän.
Sallitut ohjelmointikielet ovat C++, Java, Python (versiot 2 ja 3) sekä Haskell. Lisäksi yleensä C-koodin voi kääntää C++:na.
Esimerkkitehtävä
Tarkastellaan esimerkkinä seuraavaa tehtävää:
Tehtäväsi on laskea kahden kokonaisluvun summa. Syötteen ainoalla rivillä on kaksi kokonaislukua a ja b. Ohjelmasi tulee tulostaa lukujen summa a+b.
Esimerkkisyöte:
4 7
Esimerkkituloste:
11
Tehtävän voi ratkaista seuraavilla koodeilla:
C++:
#include <iostream> using namespace std; int main() { int a, b; cin >> a >> b; cout << a+b << "\n"; }
Java:
import java.util.*; public class Summa { public static void main(String[] args) { Scanner input = new Scanner(System.in); int a = input.nextInt(); int b = input.nextInt(); System.out.println(a+b); } }
Huom: älä käytä package-komentoa Java-koodissa.
Python 2:
a, b = [int(x) for x in raw_input().split(" ")] print a+b
Python 3:
a, b = [int(x) for x in input().split(" ")] print(a+b)
Arvostelu
Kun lähetät koodin arvosteltavaksi, jokaisen syötteen tulos on yksi seuraavista:
ACCEPTED: Ohjelma tulosti oikean vastauksen.
WRONG ANSWER: Ohjelma tulosti väärän vastauksen.
TIME LIMIT EXCEEDED: Ohjelman suoritus kesti liian kauan.
OUTPUT LIMIT EXCEEDED: Ohjelma tuotti liikaa tulostetta.
RUNTIME ERROR: Tämä tulee esimerkiksi, jos muisti loppuu kesken tai koodi heittää käsittelemättömän poikkeuksen.
Saat pisteet alitehtävän testeistä, jos ohjelma tuottaa oikean vastauksen jokaiselle alitehtävään kuuluvalle syötteelle.
Teknistä tietoa
C++
Kääntäjä: g++ 4.9.1
Kääntäjäliput: -std=c++0x -O2 -Wall.
Java
OpenJDK 1.8.0_40 (eli Java 8)
Python
Python 2.7.8 ja Python 3.4.2
Haskell
GHC 7.6.3