Lista de probleme 50

Filtrare

easyxy

#1870

Se dă un vector v cu N elemente numere naturale numerotate de la 1 la N și M întrebări de forma:

  • x y p: se afișează valoarea ce s-ar afla pe poziția p dacă v[x...y] ar fi ordonat crescător.

Fiind dat un șir de numere, numim secvenţă a acestuia o parte dintre termenii şirului luaţi de pe poziţii consecutive. Denumim platou al acestui şir o secvenţă formată din valori identice. Lungimea unui platou este egală cu numărul de elemente care îl formează.

Asupra unui şir se poate efectua următoarea operaţiune:

  1. se extrage un platou la alegere;
  2. se inserează platoul extras la pasul anterior într-o poziţie la alegere din şirul rezultat după extragere.

Să se scrie un program care citește un șir de n numere naturale și un număr k și determină:

  1. lungimea maximă a unui platou care poate să apară în şir în urma efectuării operaţiunii de mai sus de maxim k ori
  2. elementul din care este format platoul obținut după cele k operațiuni

Se dau n string-uri. Pentru fiecare string s[i] trebuie să determinați câte string-uri mai mari decât s[i] se află la stânga sa, adică în secvența s[1], s[2], …, s[i-1]. (un string a este mai mare decat un string b daca are mai multe caractere, sau daca este mai mare lexicografic)

maxq

#3963

Johnie a început să se joace cu un vector de numere. El dispune iniţial de un vector V cu N numere întregi (numerotate de la 0 la N - 1) şi poate efectua următoarele operaţii:

  • schimbarea elementului de pe poziţia p cu un alt număr întreg;
  • aflarea subsecvenţei de sumă maximă din V inclusă între indicii a şi b;

cezar1

#2169

În Roma antică există n așezări senatoriale distincte, câte una pentru fiecare dintre cei n senatori ai Republicii. Așezările senatoriale sunt numerotate de la 1 la n, între oricare două așezări existând legături directe sau indirecte. O legătură este directă dacă ea nu mai trece prin alte așezări senatoriale intermediare. Edilii au pavat unele dintre legăturile directe dintre două așezări (numind o astfel de legătură pavată stradă), astfel încât între oricare două așezări senatoriale să existe o singură succesiune de străzi prin care se poate ajunge de la o așezare senatorială la cealaltă.
Toţi senatorii trebuie să participe la şedinţele Senatului. In acest scop, ei se deplasează cu lectica. Orice senator care se deplasează pe o stradă plăteşte 1 ban pentru că a fost transportat cu lectica pe acea stradă.

La alegerea sa ca prim consul, Cezar a promis că va dota Roma cu o lectică gratuită care să circule pe un număr de k străzi ale Romei astfel încât orice senator care va circula pe străzile respective, să poată folosi lectica gratuită fără a plăti. Străzile pe care se deplasează lectica gratuită trebuie să fie legate între ele (zborul, metroul sau teleportarea nefiind posibile la acea vreme).

În plus, Cezar a promis să stabilească sediul sălii de şedinţe a Senatului într-una dintre aşezările senatoriale aflate pe traseul lecticii gratuite. Problema este de a alege cele k străzi şi amplasarea sediului sălii de şedinţe a Senatului astfel încât, prin folosirea transportului gratuit, senatorii, în drumul lor spre sala de şedinţe, să facă economii cât mai însemnate. În calculul costului total de transport, pentru toţi senatorii, Cezar a considerat că fiecare senator va călători exact o dată de la aşezarea sa până la sala de şedinţe a Senatului.

Scrieţi un program care determină costul minim care se poate obţine prin alegerea adecvată a celor k străzi pe care va circula lectica gratuită şi a locului de amplasare a sălii de ședință a Senatului.

numar6

#2174

Presupunem că avem n numere prime notate a1, a2, ..., an sortate strict crescător. Formăm un șir strict crescător b ale cărui elemente sunt toţi multiplii acestor n numere prime astfel încât, multipli comuni apar o singură dată. Presupunem că numerotarea pozițiilor elementelor din șirul b începe tot cu 1. Scrieți un program care citește din fişierul de intrare valoarea lui n şi apoi cele n elemente ale şirului a, determină elementul de pe poziţia m din şirul b şi afişează în fişierul de ieşire valoarea acestuia.

Grădinarul Marian are la dispoziţie o permutare cu n elemente şi un număr natural S care iniţial are valoarea 0. Marian execută n operaţii de forma:

  • alege elementul poziția x a minimului din permutare
  • elimină acest element din permutare, iar toate elementele de la stânga sa le mută la sfârşitul permutării (păstrând ordinea elementelor din stânga)
  • adună la S pe x.

Determinaţi valoarea lui S după ce grădinarul Marian termină de executat toate cele n operaţii.

Unicorn

#1816

Este ziua unicornului Corn şi prietenii lui vor să-i pregătească o surpriză, un mare turn de clătite! Totul trebuie să fie perfect, și toată lumea știe că cel mai frumos turn are formă de corn (clătitele sunt așezate în ordine strict descrescătoare după rază). Ei pregătesc clătite de diferite mărimi și le așază una peste alta. Fiecare clătită are o anumită valoare nutritivă. După ce termină de gătit, aceștia vor să creeze un turn de clătite in formă de corn pentru prietenul lor Corn. Astfel, unicornii pot alege să mânance oricâte clătite vor, clătitele rămase păstrându-și ordinea inițială. Clătitele care rămân în farfurie (pastrând ordinea inițială) trebuie să aibă formă de corn (strict descrescător după rază). Deoarece Corn adoră clătitele, ei vor ca turnul Corn format din clătitele rămase după ce aceștia mănâncă să aibă cea mai mare valoare nutritivă (suma valorilor nutritive ale clătitelor rămase).

Natasha a descoperit un nou joc pe calculator. Pe un suport se află N biluțe pe care este scris câte un număr si . Jocul constă în alegerea unei biluțe, biluță care se va ridica de pe suport și va pluti în aer pentru si secunde, apoi se va așeza din nou pe poziția ei în suport. În momentul în care o biluță atinge suportul, prima biluță bst din stânga ei și prima biluță bdr din dreapta ei (care nu s-au așezat pe suport în același moment de timp) se vor ridica în aer, fiecare plutind pentru sst , respectiv sdr secunde, după care se vor reașeza în suport, fiecare pe poziția ei. Această mișcare a biluțelor continuă până când Natasha se plictisește și închide calculatorul. Dar asta nu e tot. În timp ce Natasha urmărește mișcarea biluțelor, ea trebuie să răspundă la M întrebări de forma: “Este biluța bk la momentul de timp tk pe suport sau în aer?”.

Pentru fiecare din cele M întrebări, răspundeți cu 1 dacă biluța b este pe suport, sau cu 0 dacă biluța este în aer.

Se dă un şir de N numere întregi. Definim costul intervalului [x, y], unde x si y apartin {1, 2, …, N}, ca fiind suma diferenţelor dintre numărul maxim din șir, aflat în interval şi restul numerelor aflate pe pozițiile x, x+1, …, y.

De exemplu, pentru şirul 2 4 7 4 3 -1 2 4 6 costul intervalului [3, 6] este 15. (explicație: 7-7+ 7-4 + 7-3 + 7+1 = 15).

Se definesc M operaţii de forma tip x y, astfel: Dacă tip este 1, atunci elementul de pe poziţia x din șir devine y. Dacă tip este 2, atunci să se afişeze costul intervalului [x, y].

Să se determine răspunsul pentru fiecare operaţie de tipul 2.

Du-te sus!