Fişierul intrare/ieşire:hamster.in, hamster.outSursăJunior Challenge 2016
AutorBonciocat Ciprian, Costin OncescuAdăugată deJuniorChallenge2015JuniorChallenge2016 JuniorChallenge2015
Timp execuţie pe test0.55 secLimită de memorie262144 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Hamster

După atâţia ani de mâncat seminţe, Hamsterul Vlăduţ a decis să treacă la o dietă mai sănătoasă. El are o pistă de alergare ce constă într-un dreptunghi format prin alipirea mai multor celule 1 \times 1 cap la cap, startul şi finishul fiind cele două muchii care mărginesc pista (stânga şi respectiv dreapta). El îşi propune să alerge în fiecare zi dintre următoarele Q zile. Cârtiţoiul Bobo, vechiul său duşman din copilărie, află de planul lui Vlăduţ şi decide să-l încurce puţin. El va alege un număr de N celule distincte ale pistei şi va săpa câte un şanţ exact după fiecăre celulă aleasă (dacă celula este i, el va crea un şanţ ce va separa celulele i şi i+1). Vlăduţ, văzând ce i-a făcut cârtiţoiul, se decide ca în fiecare zi să treacă peste primele K_i gropi (de la stânga spre dreapta), unde i este numărul zilei curente, iar K_i este un număr natural nenul ales de el. În plus, pentru că este la început şi îi este lene să sară peste gropi, el se gândeşte să împrumute de la vecinul său nişte plăci, cu care să acopere toate gropile din calea lui. Vecinul său îi poate împrumuta în ziua i un număr nelimitat de plăci 1 \times D_i, însă cu condiţia de a le returna până seara.

Hamsterul Vlăduţ are nevoie de ajutorul vostru pentru a-şi realiza planul şi vă cere să aflaţi pentru fiecare zi dintre cele Q ale dietei sale, care este numărul optim (minim) de plăci pe care trebuie să le folosească pentru a acoperi complet găurile pe care le are de parcurs (o placă nu are voie să acopere o celulă doar parţial, iar o gaură se consideră acoperită dacă se află oriunde în interiorul plăcii, sau pe capete, exact ca la un interval închis).

Date de intrare

Fişierul de intrare hamster.in conţine pe prima linie două numere naturale nenule, separate printr-un spaţiu, ce reprezintă în ordine numerele N şi Q din enunţ. Pe următoarea linie se găsesc N numere naturale nenule separate două câte două alăturate printr-un spaţiu, reprezentând indicii celulelor după care Bobo sapă un şanţ, în ordine crescătoare. Fişierul mai conţine încă Q linii, pe linia 2+j găsindu-se două numere naturale nenule separate printr-un spaţiu, reprezentând în ordine K_i şi D_i.

Date de ieşire

În fişierul de ieşire hamster.out trebuie să se găsească Q linii, fiecare conţinând câte un număr natural. Pe linia i se va găsi numărul minim necesar de plăci pentru ziua i a dietei.

Restricţii

  • Subtask 1 (20 puncte): 1 ≤  N , Q ≤ 2000 şi 0 ≤  X_i ≤ 109 (Feedback testul 4)
  • Subtask 2 (30 puncte): 1 ≤  N ≤ 1000, 1 ≤  Q ≤ 3 * 105, 0 ≤  X_i ≤ 109 şi K = N (Feedback testele 7 si 10)
  • Subtask 3 (30 puncte): 1 ≤  N ≤ 1000, 1 ≤  Q ≤ 3 * 105 şi 0 ≤  X_i ≤ 109 (Feedback testul 16)
  • Subtask 4 (20 puncte): 1 ≤  N ≤ 3000, 1 ≤  Q ≤ 3 * 105 şi 0 ≤  X_i ≤ 1015 (Feedback testul 20)
  • În toate subtaskurile 2 ≤  K_i ≤ N si 1 ≤  D_i
  • S-a notat cu  X_i coordonata celei de a i-a gropi.
  • Se garantează că datele din fişierul de intrare sunt corecte (indicii gropilor nu vor depăşi lungimea maximă a pistei, D_i-urile asemenea).
  • Se garantează că oricare două poziţii diferite ale unor gropi au coordonate diferite.
  • Indicii gropilor sunt deja ordonaţi crescători
  • ATENŢIE! Se recomandă parsarea fişierului de intrare hamster.in pentru obţinerea scorului maxim. Puteţi folosi codul de pe siteul acesta (atât pentru utilizatorii de C++ şi sintaxă similară cu fstream, cât şi pentru iubitorii de C pur)

Exemplu

hamster.inhamster.out
5 6
2 4 5 7 9
3 2
3 1
3 5
5 1
5 2
4 3
2
2
1
4
3
2
32 28
3 6 9 11 14 17 20 22 25 28 30 32 34 37 40 43 45 48 50 52 54 57 60 62 64 66 69 71 74 76 79 82
27 11
24 8
29 14
26 8
31 11
25 9
25 10
29 14
29 14
26 10
22 15
30 10
29 14
25 8
21 8
29 12
25 10
21 13
30 10
21 9
24 14
27 8
29 13
30 11
25 14
26 13
26 14
25 10
6
7
5
7
6
6
6
5
5
6
4
7
5
7
6
6
6
4
7
5
4
7
5
6
4
5
4
6

Explicaţie

Primul exemplu este cel din poza.

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?