.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » arc

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
arc


Timp maxim de execuţie / test:
0.1s
Memorie totala disponibilă / stivă:
4MB / 1MB

Irinuca a descoperit un nou joc pe calculator. Pe ecran sunt plasate pe o linie n bile colorate. Culorile bilelor sunt codificate cu numere naturale. Un subşir de bile alăturate având toate aceeaşi culoare se numeşte secvenţă. O secvenţă va conţine numărul maxim de bile alăturate având aceeaşi culoare. Lungimea unei secvenţe este egală cu numărul de bile din care este compusă.
Irinuca are la dispoziţie un arc special. Trăgând cu arcul asupra unei bile, dacă aceasta face parte dintr-o secvenţă de lungime cel puţin egală cu 3, întreaga secvenţă va fi eliminată, iar bilele din dreapta secvenţei se vor deplasa spre stânga pentru a umple “golul” lăsat de bilele eliminate. Dacă imediat în stânga şi în dreapta secvenţei eliminate se găseau două secvenţe având aceeaşi culoare şi dacă secvenţa obţinută din unirea acestora după eliminare are o lungime cel puţin egală cu 3, atunci va fi şi ea eliminată la rândul ei. Procesul continuă până când secvenţele din stânga şi dreapta unei secvenţe tocmai eliminate au culori diferite sau până când lungimea secvenţei obţinute prin alăturare este mai mică decât 3 sau până când în stânga ori în dreapta unei secvenţe eliminate nu se mai găsesc bile sau până sunt eliminate toate bilele de pe ecran.
Scopul jocului este de a elimina cât mai multe bile de pe ecran. Cum Irinuca încă nu se pricepe prea bine la acest joc şi-a stabilit o strategie. Va trage cu arcul întotdeauna asupra unei bile ce face parte din secvenţa de lungime maximă de pe ecran. Dacă sunt mai multe astfel de secvenţe, ea va alege cea mai din stânga secvenţă de lungime maximă. Dacă toate secvenţele de pe ecran au lungimi mai mici decât 3, Irinuca nu va mai putea elimina nici una din ele şi jocul se încheie.

De exemplu, dacă şirul iniţial de bile este
5 1 3 3 2 2 2 2 3 1 1 5 6 4 4 4 4 7
Irinuca va acţiona asupra unei bile de culoare 2. Prin eliminare se obţine şirul de bile
5 1 3 3 3 1 1 5 6 4 4 4 4 7
din care se elimină şi secvenţa de bile de culoare 3 obţinându-se şirul de bile
5 1 1 1 5 6 4 4 4 4 7
din care se elimină şi secvenţa de culoare 1.
5 5 6 4 4 4 4 7
Cum secvenţa de bile de culoare 5 nu este suficient de lungă, aceasta nu se mai elimină. Acum Irinuca trage asupra unei bile de culoare 4 şi obţine
5 5 6 7
dar cum în stânga şi în dreapta secvenţei eliminate sunt secvenţe de culori diferite, nu se va mai elimina nici o secvenţă. Jocul se încheie deoarece nu mai există nici o secvenţă de lungime cel puţin 3 asupra căreia să se poată trage.

Cerinţă

Cunoscând numărul de bile şi culorile fiecărei bile de pe ecran se cere să se determine:
1. numărul de secvenţe de bile care se aflau iniţial pe ecran;
2. numărul de bile care rămân neeliminate de pe ecran şi culorile bilelor rămase în ordine pe ecran la finalul jocului.

Date de intrare

Fişierul de intrare arc.in conţine pe prima linie un număr natural V. Pentru toate testele de intrare, numărul V poate avea doar valoarea 1 sau 2.
A doua linie conţine un număr natural n reprezentând numărul de bile, iar a treia linie conţine n numere naturale c1, c2, ..., cn separate prin câte un spaţiu, reprezentând culorile celor n bile de pe ecran.

Date de ieşire

Dacă valoarea lui V este 1, se va rezolva numai punctul 1 din cerinţă.
În acest caz, în fişierul de ieşire arc.out se va scrie un singur număr natural n1, reprezentând numărul de secvenţe de bile aflate iniţial pe ecran.
Dacă valoarea lui V este 2, se va rezolva numai punctul 2 din cerinţă.
În acest caz, în fişierul de ieşire arc.out se va scrie pe prima linie un singur număr natural n2, reprezentând numărul de bile care rămân neeliminate de pe ecran la finalul jocului, iar pe următoarele n2 linii se va scrie câte un număr natural reprezentând în ordine culorile bilelor rămase neeliminate la finalul jocului.
Dacă la finalul jocului nu mai rămâne nici o bilă neeliminată, fişierul de ieşire va conţine pe prima sa linie valoarea 0.

Restricţii

• 1 ≤ n ≤ 10 000
• 1 ≤ c1, c2, …, cn ≤ 100 000
• Pentru rezolvarea corectă a primei cerinţe se acordă 20 de puncte, iar pentru cerinţa a doua se acordă 80 de puncte.

Exemple

arc.inarc.outExplicaţii
1 18 5 1 3 3 2 2 2 2 3 1 1 5 6 4 4 4 4 7 10 V = 1
Atenţie!
Pentru acest test se rezolvă doar cerinţa 1.
Secvenţele sunt (5), (1), (3, 3), (2,2,2,2), (3), (1,1), (5), (6), (4,4,4,4), (7)
2 18 5 1 3 3 2 2 2 2 3 1 1 5 6 4 4 4 4 7 4 5 5 6 7 V = 2
Atenţie!
Pentru acest test se rezolvă doar cerinţa 2.
2 15 1 2 2 2 2 1 1 3 3 3 4 4 4 4 3 0 V = 2
Atenţie!
Pentru acest test se rezolvă doar cerinţa 2.

autor: Prof. Carmen Popescu
propunător: Prof. Emanuela Cerchez
Colegiul Naţional ″Emil Racoviţă″
emanuela.cerchez@gmail.com
Probleme recomandate
De la OJI 2015: panda, charlie, ech, lasere, 2sah, dragoni, defrag, dominant, pavare1, ordine, covor1, speciale, cuart
De acelaşi autor: light, sort, iepuras, pahare, turist, arthur, pento, cod2, game, ambigram, jokes, trecere, paianjen, zumzi, cifru3, pamant, pixy, triburi, culori1, cifre5
Despre vector: trei, simetric, egal, ruleta, pod, uscat, afise, an, bunici, cursa, onu, tramvai, cadou, kpal, expresie, piticot, roci, petrol, grad, ruleta2, ecran, palma, concurs, holo, ab2, tren2, cifre, mgo, firma, anagrame, joc2, br, maxim, astre, numere2, baby, zapada, hd, startrek, vecini2, drept, teatru, tir, patrate2, nr, cifra, repeat, unu, criptare, ratb, placi, sume3, turist, matrice3, pavaj, sume, kafka, bacan, spair, grup, friends2, bitslang, fisc, scor2, cat, nr3, chimie2, zid, politics, submat, reteta2, rezervatie, creioane, felinare, 2numere, exp, scoici, patrate1, playlist, sqr, carte, oua, turn, ants, div3, jeton, politic, trecere, maraton, zaruri, suma1, mere1, agitatie, lacuri, secv, sotron, triunghi, carti1, spioni, kalah, excursia, matricea, maxq, oras, furnici, baschet, ingerasi, numar1, prieteni, aritma, cezar, bifo, pal, seceta, bare, soricel1, antena, avere, paianjen, bloc, schi, suma3, fractie, tunel, pepsi, prefix, tren3, avion, premii1, csir, top, bsir, secvente, cod4, cuburi3, limbaj, panouri, sant1, zumzi, sport1, baschet1, mere3, powerpuff, placare, sir4, volei1, tabel, ocr, numere7, lacusta, flori, pluton, elfi, mare, grupe1, maroco, cartonas, cabina, case, cod5, furnica, numere8, paritate, comoara1, exponent, control, exp1, joc13, popas, reactivi, siruri1, vanatoare, submult, text1, taxe1, visul, paranteze, puncte3, cub3, numere9, panglica, pietre, poartas, sume2, bal, secvsir, vot, prefix1, accesibil, palc, standard, bursa, meteo, jetoane, printesa, palindrom, joker, matriosca, loto, cuvant, cladiri1, secvente1, zar, tren4, asociativ, lego, medalii, figura, joc14, neuroni, char, dartz, turism1, calorii, xor1, paltrei, album, livada1, colorare, greutati, brazi, submatrix1, plaja, cd1, cifru3, permutare, miere, tetris1, conferinta, atelier, radical, bileprime, nx, atletism, sumb, minmax, sumacifre, jocprim, sircifre, cmmdcsecv, secvb, siruri3, cifru4, vase, carte1, grad1, litere, magic6, macheta, butoane, ec, stalpi2, fagure, goe, papusa, taburet, mesaj3, zar1, joc16, talent, joc18, cos, punctfix, risipa, liste, triburi, nr0, oneton, nor, nrpomi, paisprezece, anagramabil, zuma, joc20, dale, perechi2, consiliu, becuri2, codpatrat, adprod, qtri, reconst, arme, triunghi4, deal, ozn1, cifru5, flori1, elicop, roata, trifoi, maxbin, culori2, numar5, bile6, proiecte, alune, cuburi4, sstabil, intersectii, copaci2, 7segmente, amedie, drept2, divider, eliminare, matd3, prodnr, fraze, vectori1, compar, unific, galbeni, clepsidru, calcule, puncte6, maxp, cursa1, secvp, swap, extraprime, onigim, divizori1, remi1, tetris3, amestec, eoliene, split, momente, secvente2, ausoara, aranjare2, vintage, binremove, sminus, subsets, interclasare, palindromuri, colina, doitrei, rebus1, tcif, munte3, triunghi6, schi1, rascoala, solitar, praslea, vot2, tema, sprime, sir2dif, aperm, unudoi, prajituri, tan, concurs4, ech, dominant, ordine, tv1, nebuni, sort2dist, lightbot, iepuras1, castig
Despre secvenţe: degrade, hora, simetric, egal, ruleta, ecran, sirag, pasi, firma, br, numere2, termen, div, teatru, repeat, ratb, 2sec, sport, pikachu, suma3, panouri, sir5, mare, hof, resturi, efort, xor1, livada1, diff, popic, guess, albine1, permutare, miere, atelier, obstacole, echilibru1, lcdr, 3max, ksecv, maxbin, meteo1, galbeni, maxp, secvp, split, secvente2, ausoara, sminus, munte3, cool, betisoare, unudoi, charlie, lasere, dominant, restaurare, roua
Despre simulare: lbd, iepuras, tren2, mgo, joc2, kafka, comori, loc, bile3, cat, felinare, spioni, lift, kalah, cutii, roboti, pesti, zar1, joc16, safeu, joc20, dame, conjectura, wb, robot6
surse trimise | ajutor