Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2016-12-09 16:59:11.
Revizia anterioară   Revizia următoare  

 

Fişierul intrare/ieşire:towers.in, towers.outSursăShumen 2016 - Seniori
AutorRusko ShikovAdăugată deAndrei1998Andrei Constantinescu Andrei1998
Timp execuţie pe test0.75 secLimită de memorie262144 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Towers

Orasul X este compus din N blocuri, ordonate sub forma unei secvente numerotate de la 1 la N, de la vest la est. Fiecare bloc are o inaltime diferita - un numar intreg, respectiv h1, h2, ..., hN. Guvernul planuieste sa construiasca un turn, stiuat in aceeasi secventa cu blocurile (poate sa fie inaltimea primului bloc, intre oricare doua blocuri sau dupa ultimul bloc). Turnul osa transmita mesaje cetatenilor. *Turnul trebuie sa aiba inaltimea H, care trebuie sa fie diferita de toate celelalte inaltimi ale blocurilor.

Din cauza unor idei ingineresti destul de ciudate, turnul va putea transmite semnale doar in vest (spre inceputul secventei de blocuri). Semnalele sunt de asemenea ciudate - acestea sunt unde care traverseaza orizontal (parelele cu solul, pe care le consideram linii drepte) si sunt emise din toata suprafata blocului (de sus in jos). Deci, ne putem imagina ca turnul emite o banda continua de semnale cu latimea egala cu inaltimea turnului. Cand o unda intalneste un bloc, se opreste. *Fiecare bloc primeste semnalele semnalele folosind un receptor localizat in varful acestuia. Un bloc primeste un mesaj daca cel putin o unda atinge receptorul.

Cu alte cuvinte, blocul cu indicele i va primi mesaje de la turn doar atunci cand: blocul i este situat in stanga turnului; i nu este mai inalt decat turnul si nu exista un alt bloc j intre ele ($j$ > i), care este mai inalt decat blocul i.

(Poza)

Uitati-va la exemplul din figura de mai sus: blocurile care receptioneaza mesaje sunt cele cu indicii 2, 5, 6, 9.

Un singur turn o sa fie construit, cu taote acestea guvernul a primit oferte pentru K variante de turnuri, fiecare avend o inaltime diferita. Ofertele de turnuri usnt numerotate de la 1 la K. Fiecare turn are inaltimea sa, care este de asemenea diferita de inaltimea blocurilor. Liderii orasului doresc sa afle numarul maxim de blocuri, care ar primi mesajele, pentru fiecare dintre cele K oferte de turnuri, inainte de a lua decizia oficiala. Desigur, raspunsurile trebuie determinate considerand asezarea optima a fiecarui turn.

Scrieti un program towers care sa determine numarul maxim de blocuri care ar primi mesaje pentru fiecare din cele K oferte. Se da secventa de blocuri din oras (mai exact, inaltimile lor) si inaltimile tuturor ofertelor de turnuri.

Date de intrare

Pe prima linie a fişierului de intrare towers.in se gasesc doua numere naturale separate printr-un spatiu: N si K - numarul de blocuri si numarul de oferte de turnuri.

Pe cea de a doua linie se gasesc N numere naturale separate prin spatii - inaltimile blocurilor din oras, numerotate de la 1 la N.

Pe cea de a treia linie se gasesc K numere naturale separate prin spatii - inaltimile ofertelor de turnuri.

Date de ieşire

Programul trebuie sa afiseze o singura linie in fişierul de ieşire towers.out: K numere naturale separate prin cate un spatiu: pentru fiecare oferta din cea de a treia linie din input - numarul maxim de blocuri care ar primi mesaje, daca turnul ar fi construit si plasat optim.

Restricţii

  • 1 ≤ N ≤ 1 000 000
  • 1 ≤ K ≤ 1 000 000
  • $1 ≤ inaltimea fiecarui bloc si oferte de turnuri ≤ 10^9 $
  • Pentru 20% din teste N ≤ 1000, K ≤ 20
  • Pentru alte 30% din teste N ≤ 1 000 000, K ≤ 20

Exemplu

towers.intowers.out
This is some
text written on
multiple lines.
This is another
text written on
multiple lines.

Explicaţie

...

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?