#615
Gate
După ce a ajutat la conectarea oraşelor Nordemos şi Suderim, Negrimon s-a hotărât să-şi urmeze destinul şi să devină un programamon roşu. Pentru a-şi începe călătoria, este nevoit să părăsească Udobje Lurrak şi să treacă prin Sha’ar Azih, poarta magică de la ieşirea din oraşul Estumar. Această poartă se bazează pe un sistem de runix-uri aşezate în linie, numerotate de la 1
la N
. Un runix este un pătrat pe care este înscrisă o literă mică, din mulţimea
unui alfabet restrâns, format din primele L
litere ale alfabetului englez. Alfabetul restrâns este circular, astfel încât după ultima literă urmează prima, iar înainte de prima literă este ultima literă din alfabet.
În starea iniţială a sistemului, primul runix este setat pe litera a
, al doilea runix este setat pe următoarea literă din alfabetul restrâns ş.a.m.d .
Când Negrimon ajunge la poartă, aceasta prinde viaţă şi se produce un şir de acţiuni de următorul tip:
1. Runix-ul cu numărul r
împreună cu toate runix-urile din stânga se deplasează şi se separă de cele din dreapta (dacă există), formându-se astfel două grupuri independente (iniţial toate runix-urile formează un singur grup).
2. Toate runix-urile din grupul din care face parte runix-ul cu numărul r
execută o schimbare de pas p
. Aceasta constă în înlocuirea literei asociate cu următoarea a p
-a literă din alfabet (p > 0
) sau cu precedenta a (-p)
-a literă din alfabet (p < 0
). Datorită circularităţii alfabetului, oricât de mare ar fi p
va exista o literă care să fie la
distanţa p
faţă de litera actuală.
3. Negrimon primeşte o întrebare de tipul: pe ce literă este setat runix-ul cu numărul r
?
Poarta se deschide dacă Negrimon răspunde corect la toate întrebările primite şi astfel își poate continua călătoria în Azih Lurrak.
Ajutaţi-l pe Negrimon să deschidă poarta.
Problema | Gate | Operații I/O |
gate.in /gate.out
|
---|---|---|---|
Limita timp | 0.8 secunde | Limita memorie |
Total: 64 MB
/
Stivă 1 MB
|
Id soluție | #34737015 | Utilizator | |
Fișier | gate.cpp | Dimensiune | 2.30 KB |
Data încărcării | 11 Februarie 2022, 14:22 | Scor / rezultat | 100 puncte |
gate.cpp: In function 'int main()': gate.cpp:28:39: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("gate.in", "r", stdin); ^ gate.cpp:29:41: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("gate.out", "w", stdout); ^ gate.cpp:31:38: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d %d %d", &N, &L, &M); ^ gate.cpp:35:32: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d", &t); ^ gate.cpp: In function 'void solve1()': gate.cpp:59:26: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d", &poz); ^ gate.cpp: In function 'void solve2()': gate.cpp:79:33: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d %d", &poz, &p); ^ gate.cpp: In function 'void solve3()': gate.cpp:99:26: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d", &poz); ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
1 | 0 secunde | OK. | 5 | 5 | ||
2 | 0 secunde | OK. | 5 | 5 | ||
3 | 0.004 secunde | OK. | 5 | 5 | ||
4 | 0 secunde | OK. | 5 | 5 | ||
5 | 0.06 secunde | OK. | 8 | 8 | ||
6 | 0.036 secunde | OK. | 8 | 8 | ||
7 | 0.036 secunde | OK. | 8 | 8 | ||
8 | 0.092 secunde | OK. | 8 | 8 | ||
9 | 0.04 secunde | OK. | 8 | 8 | ||
10 | 0.096 secunde | OK. | 8 | 8 | ||
11 | 0.072 secunde | OK. | 8 | 8 | ||
12 | 0.056 secunde | OK. | 8 | 8 | ||
13 | 0.06 secunde | OK. | 8 | 8 | ||
14 | 0.152 secunde | OK. | 8 | 8 | ||
Punctaj total | 100 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Gate face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.