#1027
Cool
Se consideră un șir A
format din N
elemente naturale nenule. Numim secvență de lungime K
a șirului A
orice succesiune de elemente consecutive din șir de forma A
i
, A
i+1
,…, A
i+K-1
.
O secvență o numim secvență cool dacă elementele care o compun sunt distincte și pot fi rearanjate astfel încât să alcătuiască o secvență continuă de numere consecutive.
De exemplu, considerând șirul A=(3,1,6,8,4,5,6,7,4,3,4)
, atunci secvența (8,4,5,6,7)
este o secvență cool deoarece conține elemente distincte ce pot fi rearanjate astfel încât să alcătuiască șirul de numere consecutive 4,5,6,7,8,
pe când secvențele (4,3,4), (6,7,4,3)
nu sunt considerate secvențe cool.
Fiind dat un şir de N
numere naturale nenule se cer următoarele:
1. Pentru o valoare dată K
să se verifice dacă secvența A
1
, A
2
,…, A
K
este secvență cool. Dacă secvența este cool, atunci se va afișa cea mai mare valoare ce aparține secvenței. Dacă secvența nu este cool, atunci se va afișa numărul elementelor distincte din secvența A
1
, A
2
,…, A
K
, adică numărul elementelor care apar o singură dată.
2. Lungimea maximă a unei secvențe cool și numărul secvențelor cool de lungime maximă.
OJI 2014, Clasa a IX-a
Problema | Cool | Operații I/O |
cool.in /cool.out
|
---|---|---|---|
Limita timp | 0.5 secunde | Limita memorie |
Total: 2 MB
/
Stivă 1 MB
|
Id soluție | #18951738 | Utilizator | |
Fișier | cool.cpp | Dimensiune | 1.72 KB |
Data încărcării | 22 Noiembrie 2019, 11:55 | Scor / rezultat | Eroare de compilare |
cool.cpp:3:2: error: stray '\310' in program Colegiul Național „Tudor Vladimirescu”, Târgu Jiu ^ cool.cpp:3:2: error: stray '\233' in program cool.cpp:3:2: error: stray '\342' in program cool.cpp:3:2: error: stray '\200' in program cool.cpp:3:2: error: stray '\236' in program cool.cpp:3:2: error: stray '\342' in program cool.cpp:3:2: error: stray '\200' in program cool.cpp:3:2: error: stray '\235' in program cool.cpp:3:2: error: stray '\303' in program cool.cpp:3:2: error: stray '\242' in program cool.cpp:6:1: error: stray '\310' in program Cerința 1. ( 20 puncte) ^ cool.cpp:6:1: error: stray '\233' in program cool.cpp:7:1: error: stray '\304' in program Printr-o simplă verificare a frecvenței de apariție a primelor k numere se obține răspunsul așteptat. ^ cool.cpp:7:1: error: stray '\203' in program cool.cpp:7:1: error: stray '\310' in program cool.cpp:7:1: error: stray '\233' in program cool.cpp:7:1: error: stray '\310' in program cool.cpp:7:1: error: stray '\233' in program cool.cpp:7:1: error: stray '\310' in program cool.cpp:7:1: error: stray '\233' in program cool.cpp:7:1: error: stray '\304' in program cool.cpp:7:1: error: stray '\203' in program cool.cpp:7:1: error: stray '\310' in program cool.cpp:7:1: error: stray '\231' in program cool.cpp:9:1: error: stray '\310' in program Cerința 2. ^ cool.cpp:9:1: error: stray '\233' in program cool.cpp:11:1: error: stray '\310' in program O soluție brute-force obține 25 p. ^ cool.cpp:11:1: error: stray '\233' in program cool.cpp:11:1: error: stray '\310' in program cool.cpp:11:1: error: stray '\233' in program cool.cpp:12:1: error: stray '\310' in program O soluție bazată pe set(stl) obține 40-50 p. ^ cool.cpp:12:1: error: stray '\233' in program cool.cpp:12:1: error: stray '\304' in program cool.cpp:12:1: error: stray '\203' in program cool.cpp:12:1: error: stray '\310' in program cool.cpp:12:1: error: stray '\233' in program cool.cpp:14:1: error: stray '\310' in program Soluția 1. ( 80 puncte) (Eugen Nodea) ^ cool.cpp:14:1: error: stray '\233' in program cool.cpp:15:2: error: stray '\310' in program Rezolvarea cerinței necesită câteva observații. ^ cool.cpp:15:2: error: stray '\233' in program cool.cpp:15:2: error: stray '\304' in program cool.cpp:15:2: error: stray '\203' in program cool.cpp:15:2: error: stray '\303' in program cool.cpp:15:2: error: stray '\242' in program cool.cpp:15:2: error: stray '\310' in program cool.cpp:15:2: error: stray '\233' in program cool.cpp:16:1: error: stray '\310' in program Fie secvența ce conține k numere consecutive distincte: ^ cool.cpp:16:1: error: stray '\233' in program cool.cpp:16:1: error: stray '\310' in program cool.cpp:16:1: error: stray '\233' in program cool.cpp:19:1: error: stray '\304' in program Observăm că: ^ cool.cpp:19:1: error: stray '\203' in program cool.cpp:19:1: error: stray '\304' in program cool.cpp:19:1: error: stray '\203' in program cool.cpp:22:1: error: stray '\310' in program 3) relația 1) este adevărată indiferent de ordinea elementelor ^ cool.cpp:22:1: error: stray '\233' in program cool.cpp:22:1: error: stray '\304' in program cool.cpp:22:1: error: stray '\203' in program cool.cpp:22:1: error: stray '\304' in program cool.cpp:22:1: error: stray '\203' in program cool.cpp:23:1: error: stray '\310' in program Așadar, ^ cool.cpp:23:1: error: stray '\231' in program cool.cpp:24:1: error: stray '\310' in program - pentru orice secvența care începe pe poziția i si se termina pe poziția j se va determina minimul si maximul ^ cool.cpp:24:1: error: stray '\233' in program cool.cpp:24:1: error: stray '\303' in program cool.cpp:24:1: error: stray '\256' in program cool.cpp:24:1: error: stray '\310' in program cool.cpp:24:1: error: stray '\233' in program cool.cpp:24:1: error: stray '\310' in program cool.cpp:24:1: error: stray '\233' in program cool.cpp:25:1: error: stray '\310' in program - secvența este cool daca respecta relațiile 1) si 2) ^ cool.cpp:25:1: error: stray '\233' in program cool.cpp:25:1: error: stray '\310' in program cool.cpp:25:1: error: stray '\233' in program cool.cpp:26:1: error: stray '\304' in program Astfel, complexitatea rezolvării subpunctului b) poate fi redusă la O(N*k) amortizat. ^ cool.cpp:26:1: error: stray '\203' in program cool.cpp:26:1: error: stray '\304' in program cool.cpp:26:1: error: stray '\203' in program cool.cpp:28:1: error: stray '\310' in program Soluția 2. ( 80 puncte) (Constantin Galatan) ^ cool.cpp:28:1: error: stray '\233' in program cool.cpp:29:2: error: stray '\310' in program Pentru secvența curentă cuprinsă între pozițiile i și j, se menține un șir de contoare pentru valorile din secvență. La adăugarea unui nou element a[j] în secvență se incrementează valoarea contorului corespunzător: cnt[a[j]]++, iar la eliminarea unui element a[i] din secvență, contorul se decrementează: cnt[a[i]]--. Se rețin de asemenea maximul și minimul valorilor din secvență în amax și amin. La fiecare pas se verifică dacă amax – amin == j – i și că nicio valoare din secvență nu are contorul mai mare decât 1. Complexitatea soluției este O(n^2) ^ cool.cpp:29:2: error: stray '\233' in program cool.cpp:29:2: error: stray '\304' in program cool.cpp:29:2: error: stray '\203' in program cool.cpp:29:2: error: stray '\304' in program cool.cpp:29:2: error: stray '\203' in program cool.cpp:29:2: error: stray '\303' in program cool.cpp:29:2: error: stray '\256' in program cool.cpp:29:2: error: stray '\310' in program cool.cpp:29:2: error: stray '\233' in program cool.cpp:29:2: error: stray '\310' in program cool.cpp:29:2: error: stray '\231' in program cool.cpp:29:2: error: stray '\310' in program cool.cpp:29:2: error: stray '\233' in program cool.cpp:29:2: error: stray '\310' in program cool.cpp:29:2: error: stray '\231' in program cool.cpp:29:2: error: stray '\310' in program cool.cpp:29:2: error: stray '\233' in program cool.cpp:29:2: error: stray '\304' in program cool.cpp:29:2: error: stray '\203' in program cool.cpp:29:2: error: stray '\304' in program cool.cpp:29:2: error: stray '\203' in program cool.cpp:29:2: error: stray '\303' in program cool.cpp:29:2: error: stray '\256' in program cool.cpp:29:2: error: stray '\310' in program cool.cpp:29:2: error: stray '\233' in program cool.cpp:29:2: error: stray '\304' in program cool.cpp:29:2: error: stray '\203' in program cool.cpp:29:2: error: stray '\304' in program cool.cpp:29:2: error: stray '\203' in program cool.cpp:29:2: error: stray '\304' in program cool.cpp:29:2: error: stray '\203' in program cool.cpp:29:2: error: stray '\310' in program cool.cpp:29:2: error: stray '\233' in program cool.cpp:29:2: error: stray '\304' in program cool.cpp:29:2: error: stray '\203' in program cool.cpp:29:2: error: stray '\304' in program cool.cpp:29:2: error: stray '\203' in program cool.cpp:29:2: error: stray '\310' in program cool.cpp:29:2: error: stray '\233' in program cool.cpp:29:2: error: stray '\310' in program cool.cpp:29:2: error: stray '\231' in program cool.cpp:29:2: error: stray '\310' in program cool.cpp:29:2: error: stray '\233' in program cool.cpp:29:2: error: stray '\304' in program cool.cpp:29:2: error: stray '\203' in program cool.cpp:29:2: error: stray '\303' in program cool.cpp:29:2: error: stray '\256' in program cool.cpp:29:2: error: stray '\310' in program cool.cpp:29:2: error: stray '\231' in program cool.cpp:29:2: error: stray '\304' in program cool.cpp:29:2: error: stray '\203' in program cool.cpp:29:2: error: stray '\304' in program cool.cpp:29:2: error: stray '\203' in program cool.cpp:29:2: error: stray '\342' in program cool.cpp:29:2: error: stray '\200' in program cool.cpp:29:2: error: stray '\223' in program cool.cpp:29:2: error: stray '\342' in program cool.cpp:29:2: error: stray '\200' in program cool.cpp:29:2: error: stray '\223' in program cool.cpp:29:2: error: stray '\310' in program cool.cpp:29:2: error: stray '\231' in program cool.cpp:29:2: error: stray '\304' in program cool.cpp:29:2: error: stray '\203' in program cool.cpp:29:2: error: stray '\310' in program cool.cpp:29:2: error: stray '\233' in program cool.cpp:29:2: error: stray '\304' in program cool.cpp:29:2: error: stray '\203' in program cool.cpp:29:2: error: stray '\303' in program cool.cpp:29:2: error: stray '\242' in program cool.cpp:29:2: error: stray '\310' in program cool.cpp:29:2: error: stray '\233' in program cool.cpp:1:1: error: 'Problema' does not name a type Problema 1. Cool ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Cool 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ă.