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

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


Timp maxim de executie/test:
0.5 secunde
Memorie totala disponibila/stiva:
48 MB/16 MB

Un editor de texte evoluat trebuie sa includa facilitatea de indexare a documentelor.

Un document este constituit dintr-o succesiune de paragrafe. Un paragraf este constituit din una sau mai multe linii. Paragrafele sunt separate prin exact o linie goala.

În primul rând documentul este paginat, fiecare pagina fiind constituita din maxim n linii. Liniile sunt plasate în pagina în ordinea în care apar în document, pâna când pagina "se umple" (contine n linii), respectând în acelasi timp si urmatoarele reguli de formatare:
1. Daca ultima linie a unei pagini este ultima linie a unui paragraf, atunci urmatoarea linie goala este eliminata (adica pagina urmatoare nu va începe cu linie goala, ci cu prima linie din paragraful urmator).
2. Daca ultima linie a unei pagini este prima linie a unui paragraf care contine mai mult de o linie (aceasta linie este denumita în tehnoredactare linie orphan), atunci aceasta linie este mutata pe pagina urmatoare.
3. Daca ultima linie a unei pagini este penultima linie a unui paragraf care contine mai mult de 3 linii, atunci aceasta linie este mutata pe ultima linie (în caz contrar ultima linie a paragrafului ar fi prima linie de pe pagina urmatoare, ceea ce în tehnoredactare este denumita linie widow).
4. Daca ultima linie de pe pagina este penultima linie a unui paragraf care contine doua sau trei linii, atunci întregul paragraf este mutat pe pagina urmatoar (evitând în acest fel sa obtinem atât linie orphan cât si linie widow) .
Regulile de paginare sunt aplicate în ordine, de la începutul documentului, pagina cu pagina.

Consideram cuvânt o succesiune de litere din alfabetul englez (nu se va face distinctie între literele mici si literele mari).

Un index este lista strict ordonata lexicografic a tuturor cuvintelor care apar în document si a numerelor de pagina la care apar aceste cuvinte. Numerele de pagina la care apare fiecare cuvânt trebuie sa fie specificate în ordine crescatoare, si vor fi separate prin virgula. Daca un cuvânt apare pe trei sau mai multe pagini consecutive, atunci se specifica doar numarul primei pagini si numarul ultimei pagini dintre acestea, separate prin liniuta (caracterul '-').
De exemplu:
MUSEUM 3-5,7-10,12,18,22-29

Cerinţă
Date fiind numarul de linii din pagina si documentul să se determine indexul.

Date de intrare
Fişierul de intrare index.in conţine pe prima linie un număr natural nenul n, reprezentând numarul maxim de linii care pot fi plasate într-o pagina. Pe urmatoarele linii este scris documentul care trebuie sa fie indexat.

Date de ieşire
Fişierul de ieşire index.out va conţine mai multe linii, câte una pentru fiecare cuvânt din document.
Fiecare linie va contine un cuvânt urmat de un singur spatiu si apoi de lista numerelor de pagina la care apare cuvântul, formatata ca în enunt. Cuvintele vor fi specificate în ordine strict lexicografica si vor fi scrise cu majuscule.

Restricţii şi precizări
4<=n<=100
Dimensiunea documentului care trebuie sa fie indexat nu depaseste 20 000 bytes.
Liniile din document nu încep si nici nu se termina cu spatii.
Documentul nu va contine doua linii goale consecutive.
Prima linie a documentului nu este goala.
Lungimea unei linii nu depaseste 200 de caractere.

Exemplu

index.in index.out

5
Din anul 2002 mii de elevi participa
la programul de pregatire de performanta in informatica .campion.
In fiecare an cel putin 10 elevi de la fiecare grupa participa
la finala .campion

cei mai buni se intrec cu cei mai buni

.campion se adreseaza tuturor celor pentru care performanta

reprezinta o pasiune, celor pentru care rezolvarea
unei probleme este o bucurie

celor impatimiti de jocurile mintii

an de an cei care au fost elevi devin profesori
se alatura echipei .campion
pentru a insufla mai departe pasiunea pentru performanta in informatica
celor ce le calca pe urme

celor ce urmeaza sa fie cel putin la fel de buni
pe cat au fost si ei

.campion e super!
participa si tu la .campion!
alatura-te celor mai buni!

A 4
ADRESEAZA 2
ALATURA 4,6
AN 1,4
ANUL 1
AU 4,5
BUCURIE 3
BUNI 2,5,6
CALCA 4
CAMPION 1,2,4,6
CARE 2-4
CAT 5
CE 4,5
CEI 2,4
CEL 1,5
CELOR 2-6
CU 2
DE 1,3-5
DEPARTE 4
DEVIN 4
DIN 1
E 6
ECHIPEI 4
EI 5
ELEVI 1,4
ESTE 3
FEL 5
FIE 5
FIECARE 1
FINALA 1
FOST 4,5
GRUPA 1
IMPATIMITI 3
IN 1,4
INFORMATICA 1,4
INSUFLA 4
INTREC 2
JOCURILE 3
LA 1,5,6
LE 4
MAI 2,4,6
MII 1
MINTII 3
O 3
PARTICIPA 1,6
PASIUNE 3
PASIUNEA 4
PE 4,5
PENTRU 2-4
PERFORMANTA 1,2,4
PREGATIRE 1
PROBLEME 3
PROFESORI 4
PROGRAMUL 1
PUTIN 1,5
REPREZINTA 3
REZOLVAREA 3
SA 5
SE 2,4
SI 5,6
SUPER 6
TE 6
TU 6
TUTUROR 2
UNEI 3
URME 4
URMEAZA 5

prof. Emanuela Cerchez
Liceul de Informatică "Gr. C. Moisil" Iaşi
emanuela.cerchez@gmail.com

propunător: Prof. Emanuela Cerchez
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la .campion 2007: perechi, teanc, light, copaci, teren, pizza, grupe, cod, ecran, drum, soldati, factura, palma, decript, lbd, aven, cs, h, trenuri, sort, spam, complex, parent, holo, tren2, gray, siruri, arce, pasi, cifre, mgo, firma, joc, cartonase, vikingi, anagrame, balbe, vecini, balaur, tribile, conflicte, criptmat, mesaj, maxim, magic3, desen, plimbare, cutie, patrate, party, vagoane, robot, astre, trains, numere2, friends, tricouri, furtuna, net, baby, scaune, 3d, axa, bile2, vmem, pahare, termen, sablon, zapada, cuvinte, excursie, hd, pajura, pc, sir, cadere, pioni
De acelaşi autor: celule, scp, vedete, film, ab, supertri, inginer, camp, sl, detinut, simetric, egal, gropi, ruleta, carti, tgv, uscat, afise, dezbateri, bunici, rv, onu, nspecial, secvop, cadou, chimie, reteta, piticot, petrol, checkin, teanc, teren, pizza, ecran, drum, text, lbd, aven, spam, pluricex, tren2, gray, pasi, mgo, joc, anagrame, vecini, criptmat, maxim, cutie, party, friends, net, sablon, hd, pc, sir2, aztec, scara, nr, robot2, sah, formule, ed, bilete, hanoig, flood, matrice3, erdos, grup, cd, kfactor, np, cuc, radio, honest, ref, nr01, scor2, convert, auto2, compress, politics, pm, playlist, barbie, firma1, submatrix, ham, pizza1, exam, ants, teatru1, cifre1, bile1, caini, secvreg, pasune, remi, m01, sir23, tren1, joc5, pachete, aedaro, windows, renju, latime, mere1, piloti, peste, pitici, sirag1, stive, turn1, carti1, program1, spioni, kgb, lift, apel, lex, oras, homeless, subsir, dist, harta1, adevar, joc10, bare, zapezi, masina2, perechi1, raft, joc11, joc12, ferma, fni, tunel, lover, pepsi, transport, avion, monkey, premii1, garaj, carti2, tv, pact, fat, cafea, echipe1, secvente, petrom, peg, scara1, lant, ecuatii, stiva, bile4, jungla, rj, poli, text1, compus1, rez, politie, anag, codul, coment, muzeu, seti, basm, timer, secvsir, dp, placa, prod3, bursa, submdisj, sotron1, fazan, secvpar, joker, lego, medalii, cfr, antipatie, figura, links, segm, colorare, brazi, mobil, distsir, guess, greiere, pestera, conferinta, chei, ny, nx, ghinion, sumb, drenaj, telecomanda, grupuri, mahjong, rotund, viena, sport2, cos, monoton, micro, valet, nr0, maxviz, anagramabil, nrpal, lista, dame, consiliu, adprod, arme, deal, prodnr, compar, latin, interviu, vintage, prize, nrdiv, arrows, tdrept, agenda, reziston, vot2, tema, smiley, relatii, ech, scadere, nebuni, castig, expand, wb, prime2, virgule, b210
Despre şiruri de caractere: scp, ab, sl, nrcuv, rv, kpal, chimie, reteta, replace, grad, cod, text, decript, spam, complex, cifre, anagrame, balbe, criptmat, mesaj, maxim, astre, sablon, formule, ed, balls, vocale, prop, bacan, novel, bitslang, text2, ref, scor2, convert, cod2, compress, pstring, sub, rima, program1, sms, circular, randuri, cezar, bifo, joc9, pal, bare, joc12, fractie, cod3, tunel, csir, top, ratina, cifru1, limbaj, adun, ecuatii, dir, paritate, virus, sir6, mesaj2, text1, sirul, ogorul, rez, sablon1, anag, sir8, seti, secvsir, dp, cuvant, strings, antipatie, fractie1, links, ordonare, text3, concat, codif, cheie, alfabetar, cuvinte2, comp, litere, mxl, mesaj3, expresie2, grad2, antic, zuma, expeval, combcuv, lgdrum, subtitrare, compresie, zigzag, azeval, fraze, subsecvente, showroom, rebus1, agenda, opmult, betisoare, reziston, clase, vot2, ecp, smiley, charlie, cript, scadere, spioni1, sablon3, expand, culori3, virgule
Despre sortare: harta, sort, concurs, baby, patrate2, repeat, turist, bacan, toys, scor2, chimie2, politics, submat, scoici, ham, jokes, trecere, multiplu, paralel, tvshow, sirag1, tabara, munte, sport, puncte1, sume1, schi, granita, tren3, sant1, volei1, poze, maroco, dreptc, dist1, tir1, control, mosia, popas, reactivi, siruri1, coach, anag, matrice4, sume2, urgenta, basm, vot, balcon, joc14, cerc, k1, segm, calorii, ordonare, greutati, arctir, macheta, poligon4, centrala, robot4, lcdr, maxviz, sdmin, qtri, arme, flori1, parc1, mijloc, bile6, proiecte, patru, drept2, subsecvente, cursa1, eoliene, vintage, dreapta, riglef, rebus1, rascoala, zimeria, praslea, aperm, unudoi, gropi1, piscina, restaurare, cabana, culori3
Software recomandat
Chestionare recomandate
surse trimise | ajutor