Seif | 프로그래밍의 벗 PivotOJ
PivotOJ

Seif

시간 제한: 1000ms메모리 제한: 1024MB출처: EIO 2017-18 sel1BOJ 29981

문제

Arheoloogid leidsid merre uppunud laevalt seifi, millel on väga omapärane digitaalne lukk. Luku ekraanil on kaks ühepikkust täisarvu, mis aeg-ajalt muutuvad. Uurijad on märganud, et ekraani oleku muutusi on kolme liiki:

  • kummalegi arvule lisandub paremale üks number;
  • mõlemal arvul kustub paremalt mingi arv numbreid;
  • ekraanile ilmub kolmas arv ja selle kõrvale ühe numbri suurune sisestusväli.

Uurijatel tekkis hüpotees, et seifi avamiseks tuleb sisestusvälja sisestada kahe suure arvu summast see number, mille positsiooni näitab kolmas arv. Kuna andmed ekraanil muutuvad käsitsi arvutamiseks liiga kiiresti, on nüüd vaja programmi, mis küsimustele vastaks.

Selle programmi põhikomponent on teek, mis reageerib seifi ekraanil toimuvatele sündmustele. Sinu ülesanne ongi kirjutada teek, mille järgnevaid funktsioone kutsutakse välja kokku NN korda:

Funktsioon Kirjeldus
void Add(int f, int s) Esimesele pikale arvule lisandus paremale number ff ja teisele number ss.
void Del(int k) Mõlemast pikast arvust kadusid kk parempoolset numbrit. Võib eeldada, et selle funktsiooni kasutamise hetkel on suured arvud vähemalt kk-kohalised. On võimalik, et sellega ei jäänud neisse üldse numbreid.
int Get(int p) Ekraanile ilmus kolmas arv pp. Funktsioon peab tagastama kahe pika arvu summas paremalt pp. kohal oleva numbri. Võib eeldada, et selle funktsiooni kasutamise hetkel on summa vähemalt pp-kohaline.

Testimiskeskkonnas on näitefailid, kus vajalikud funktsioonid on juba kirjeldatud ja lahendusena on vaja kirjutada ainult nende realisatsioonid. Lisaks võib lahenduse faili kirjutada ka oma funktsioone. Oma lahenduse oma arvutis testimiseks on ka hindamisprogrammi näide, mille sisendi ja väljundi kirjeldus on toodud allpool (serveris on kasutusel teine hindamisprogramm, mis kontrollib ka lahenduse tagastatud vastuste õigsust). Oma lahenduse oma arvutis kompileerimiseks ja testimiseks:

Keel Lahendus Käsurida
C++ seif.cpp

g++ -o main main.cpp seif.cpp

./main

입력

Tekstifaili esimesel real on teegi funktsioonide väljakutsete arv NN (1N1061 \le N \le 10^6) ja järgmisel NN real igaühel ühe väljakutse kirjeldus:

  • Rida kujul 1 FF SS (1F91 \le F \le 9, 1S91 \le S \le 9) tähendab kutset Add(f, s).
  • Rida kujul 2 KK (1K1 \le K) tähendab kutset Del(k).
  • Rida kujul 3 PP (1P1 \le P) tähendab kutset Get(p).

출력

Tekstifaili väljastatakse hindamisprogrammi ja teegi vahelise suhtluse logi.

예제

예제 1

입력
5
1 1 1
3 1
1 3 9
3 1
3 2
출력
add(1, 1)
get(1) = 2
add(3, 9)
get(1) = 2
get(2) = 3

예제 2

입력
10
1 1 1
1 2 2
1 3 3
3 1
3 2
3 3
2 2
1 4 6
3 1
3 2
출력
add(1, 1)
add(2, 2)
add(3, 3)
get(1) = 6
get(2) = 4
get(3) = 2
del(2)
add(4, 6)
get(1) = 0
get(2) = 3
코드를 제출하려면 로그인하세요.