Ești antrenorul echipei ZOMVS și te afli în satul Chițooc la finala turneului de fotbal. Este minutul 90' și echipa ta are avantaj, când deodată niște vaci invadează terenul!
Terenul este împărțit în zone de lungime egală, iar numărul de vaci din fiecare zonă este cunoscut (zonele terenului pot fi reprezentate ca un vector de elemente).
Fiindcă ai prevăzut situația aceasta, fiecare dintre jucătorii echipei tale are un lasou cu care poate face următoarea mișcare cel mult o singură dată:
- Dacă jucătorul se află pe poziția , el poate să adune toate vacile dintr-o zonă în zona , cu condiția ca .
- Totuși, această mișcare consumă energia jucătorului respectiv. Dacă coeficientul energiei jucătorului este , mișcarea va consuma unități de energie.
Cerință
Fiindcă tu ești antrenorul lor, primești întrebări de la jucători. Pentru fiecare întrebare primești două valori , și te întreabă care este numărul maxim de vaci care pot fi strânse într-o zonă și care este energia totală minimă necesară pentru a atinge acest număr folosind doar zone din intervalul .
Generarea datelor
Pentru a evita citirea unui volum foarte mare de date, doar primele întrebări vor fi citite din fișierul de intrare (unde ). Restul întrebărilor, de la până la , se vor genera în programul vostru folosind următorul algoritm:
pentru i ← M + 1, Q execută
l[i] ← ((l[i-1] ^ (a * l[i-M])) mod N) + 1
r[i] ← ((r[i-1] ^ (b * r[i-M])) mod N) + 1
dacă l[i] > r[i] atunci
interschimbă l[i] cu r[i]
sfârșit dacă
sfârșit pentru
Notă: Operația logică pe biți „XOR / SAU exclusiv” este reprezentată de simbolul ^ și se efectuează în C/C++ prin operatorul ^. Calculele intermediare din algoritmul de generare a datelor pot depăși capacitatea de reprezentare a tipurilor întregi pe 32 de biți (de exemplu int sau unsigned int). Se recomandă utilizarea tipurilor de date pe 64 de biți (de exemplu long long) unde este cazul.
Date de intrare
Pe prima linie a fișierului de intrare chitooc.in se dă (numărul de zone) și (numărul de jucători). Pe următoarea linie se află numere reprezentând numărul de vaci de pe fiecare zonă. Pe următoarele linii se află două valori: și , reprezentând poziția jucătorului și coeficientul de energie pentru aruncarea de lasou. Pe următoarea linie se vor afla 4 numere: , , și , separate prin spații. Urmează linii conținând perechi reprezentând intervalele pentru primele întrebări citite direct din fișier.
Date de ieșire
În fișierul de ieșire chitooc.out, pentru fiecare , pe linia se va afla răspunsul la a -a întrebare, adică numărul maxim de vaci care se pot strânge pe o zonă și energia totală minimă necesară, folosind doar zone din intervalul .
Iar pe următoarele linii se va afișa suma XOR a următoarelor interogări, grupate câte 100 (numărul de vaci se XOR-ează între ele, iar costurile se XOR-ează între ele).
De exemplu, dacă și , se va afișa individual răspunsul la primele 50 de interogări, apoi câte o pereche de răspunsuri pentru query-urile din intervalele , , , .
Practic, dacă răspunsurile normale ar fi formate din perechile , unde , este numărul maxim de vaci, iar este energia minimă necesară (calculată pe baza coeficienților), atunci:
- pentru , se vor afișa pe fiecare linie;
- pentru restul întrebărilor se vor calcula și afișa perechile , cu , astfel încât:
Restricții și precizări
- , pentru .
| # | Punctaj | Restricții |
|---|---|---|
| 1 | 7 | |
| 2 | 24 | |
| 3 | 5 | |
| 4 | 45 | |
| 5 | 19 | Fără alte restricții |
Exemplul 1
chitooc.in
9 4
2 8 3 0 1 1 4 9 10
1 2
3 3
6 1
7 5
3 3 1 1
1 9
4 7
8 9
chitooc.out
16 11
6 6
10 0
Explicație
Pentru primul exemplu: pentru a obține valoarea maximă și costul minim o să avem următoarele acțiuni:
Pentru prima întrebare:
- jucătorul 2 trage vacile de pe poziția 2;
- jucătorul 3 trage vacile de pe poziția 3;
- jucătorul 4 trage vacile de pe poziția 6.
Pentru a doua întrebare:
- jucătorul 3 trage vacile de pe poziția 5;
- jucătorul 4 trage vacile de pe poziția 6.
Pentru a treia întrebare:
- jucătorii nu o să facă nimic, iar numărul maxim de vaci o să fie 10.
Exemplul 2
chitooc.in
10 4
1 5 1 7 2 5 4 1 8 2
2 9
3 2
4 3
5 6
10 2 834673673 923993984
3 3
4 6
chitooc.out
1 0
9 6
30 20