infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Andrei Grigorean din Septembrie 23, 2007, 18:04:23



Titlul: 528 Trompeta
Scris de: Andrei Grigorean din Septembrie 23, 2007, 18:04:23
Aici puteţi discuta despre problema Trompeta (http://infoarena.ro/problema/trompeta).


Titlul: Răspuns: 528 Trompeta
Scris de: Sachelarie Bogdan din Septembrie 24, 2007, 16:34:14
         Cu deque iau 70p +3 tle. Mai trebuie ceva optimizari?


Titlul: Răspuns: 528 Trompeta
Scris de: Hasna Robert din Septembrie 24, 2007, 16:43:24
Asa iau si eu, primele 7 teste.Am implementat stiva ca un vector, poate fi de la asta  ???


Titlul: Răspuns: 528 Trompeta
Scris de: Cezar Mocan din Septembrie 24, 2007, 16:44:44
Si eu am facut cu deque si am tle pe ultimele 3. Probabil ca si tu folosesti 6 mega de memorie ca mine... si chestia asta cu memoria+operatiile pe deque mananca mai mult timp... solutia mai rapida ar fi aia descrisa in articol, cu stiva. Ea foloseste doar vreo 2 mega de memorie si e mai scurta si mai buna. Succes. :)


Titlul: Răspuns: 528 Trompeta
Scris de: Valkyria Dark din Septembrie 24, 2007, 19:39:30
Poate sa-mi dea si mie cineva un exemplu de rulare mai marisor decat cel oficial, va rog?

Am facut tot un fel de stiva, jucandu-ma cu pointeri. E prima mea experienta cu pointeri in C, si desi se pot folosi mai eficient decat in Pascal, spre ex, lasa loc liber erorilor. Exceptand TLE-ul de la ultimele 3, imi iau incorrect la celelalte (si 2 Blocked system call: kill. ??), deci mai mult ca sigur e o greseala de implementare.

Deci... aveti vreun exemplu mai cuprinzator pe care sa-mi pot debug-ui programul?


Titlul: Răspuns: 528 Trompeta
Scris de: Paul-Dan Baltescu din Septembrie 24, 2007, 19:44:49
Cod:
15 9
293658888722814

Cod:
988887814


Titlul: Răspuns: 528 Trompeta
Scris de: Sachelarie Bogdan din Septembrie 24, 2007, 23:17:07
          A luat cineva 100p cu sursa in pascal?


Titlul: Răspuns: 528 Trompeta
Scris de: Valkyria Dark din Septembrie 25, 2007, 12:09:40
Mersi pauldb.

Am descoperit ca sunt blonda. "Ordine initiala" nu inseamna deci neaparat consecutive... adica se poate sari peste niste note... Back to the drawing board...


Titlul: Răspuns: 528 Trompeta
Scris de: Gabriel Bitis din Septembrie 25, 2007, 12:38:04
          A luat cineva 100p cu sursa in pascal?
Pana acum nu...


Titlul: Răspuns: 528 Trompeta
Scris de: Gogu Marian din Septembrie 25, 2007, 13:35:35
http://infoarena.ro/job_detail/86753

E cam greu de luat 100 in pascal datorita operatiilor IO. La C/C++ timpul masurat e cel de CPU pe cand la pascal daca se scrie/citeste mult, timpul masurat de evaluator e aproape de cel real. Cam ce a trebuit facut sa mearga:

Cod:
var i,k,n,m:longint;
a,st:array[1..1 shl 20] of char;
f:file of char;
begin
assign(input,'trompeta.in'); reset(input);
assign(f,'trompeta.out');rewrite(f,1);
readln(n, m);
readln(a);
...
blockwrite(f, st, m);
close(f);
end.

Editat de moderator: sa nu fim prea expliciti


Titlul: Răspuns: 528 Trompeta
Scris de: Andrei Grigorean din Septembrie 25, 2007, 14:21:33
Incearca sa postezi doar partile de cod care au legatura cu optimizarea, nu cu algoritmul de rezolvare a problemei :). Altfel ar exista riscul ca unii membri sa dea un simplu copy/paste si sa ia 100.


Titlul: Răspuns: 528 Trompeta
Scris de: mce mec ecm din Septembrie 26, 2007, 11:07:40
Pentru exemplul

Cod:
6 5
009090

Rezultatul este

Cod:
9090

?


Titlul: Răspuns: 528 Trompeta
Scris de: Stefan Istrate din Septembrie 26, 2007, 11:14:40
Trebuie sa afisezi M cifre, deci corect e
Cod:
09090


Titlul: Răspuns: 528 Trompeta
Scris de: gaboru corupt din Aprilie 05, 2009, 10:32:17
Ce optimizari as mai putea aduce la solutia cu stiva? Iau TLE pe ultimele 3 teste. (am implementat stiva din STL deci nu cred ca de acolo e problema)  :sad:

http://infoarena.ro/job_detail/297112


Titlul: Răspuns: 528 Trompeta
Scris de: Craciun Adrian din Aprilie 05, 2009, 16:44:46
 :shock: problema asta e cam aceasi cu alibaba


Titlul: Răspuns: 528 Trompeta
Scris de: gaboru corupt din Aprilie 05, 2009, 19:40:02
Defapt e chiar identica... doar ca la trompeta din N cifre trebuie alese M si la Alibaba din N cifre trebuie sterse K. Si totusi de ce i-au TLE?


Titlul: Răspuns: 528 Trompeta
Scris de: Iancu David Traian din Mai 12, 2009, 21:53:02
Am o problemă, am făcut problema cu o stivă, iar vectorul şi stiva i+am făcut de tip char, însă tot nu reuşesc sa scap de 3 tle. Îmi poate da şi mie cineva un indiciu?


Titlul: Răspuns: 528 Trompeta
Scris de: gaboru corupt din Mai 12, 2009, 21:59:09
Eu am scapat de TLE pe ultimele 3 teste cand am schimbat citirea caracter cu caracter, in citirea unui vector char, si parcurgerea lui.  :)


Titlul: Răspuns: 528 Trompeta
Scris de: Bogdan Vlad din Decembrie 30, 2009, 20:53:02
 :? salut.. am luat 100 de puncte pe problema asta si am observat ca nu-mi merge pentru un test (dat de mine)
cod:
5 4
54321

imi afiseaza 54321 si corect este 5432

ar trebui modificat sau adaugat si un test pentru cazul asta?:-?? (cand sirul este descrescator) :-k :-' :)


Titlul: Răspuns: 528 Trompeta
Scris de: Simionescu Andrei din Februarie 18, 2010, 10:47:28
Salut!
Eu nu înţeleg cam cum s-ar comporta soluţia cu stivă ( de aici: [1] ) pe un input de genul (deoarece elimină vârful stivei doar când dă peste numere mai mari decât acesta):
Cod:
Exemplu #1:
7 3
9999911
Output:
911

Dacă am schimba abordarea, astfel încât să adauge la stivă şi numerele egale cu cel aflat în vârful stivei, atunci soluţia ar rata inputuri de forma:
Cod:
Exemplu #2:
7 3
5555999
Output:
559

Poate să mă lămurească cineva?

[1] http://infoarena.ro/autumn-warmup-2007/solutii/runda-2 (http://infoarena.ro/autumn-warmup-2007/solutii/runda-2)


Titlul: Răspuns: 528 Trompeta
Scris de: Gabriel Bitis din Februarie 18, 2010, 11:19:57
Ambele exemple date de tine au raspunsuri gresite.
Tu tre sa alegi din sirul acela un numar cat mai mare, format din M cifre, si cifrele trebuie sa ramana in ordine.

Rationamentul e urmatorul: cand poti schimba o cifra cat mai semnificativa cu una mai mare, o schimbi.
Cand o poti schimba? Cand iti mai raman destule cifre ca sa completezi numarul.


Titlul: Răspuns: 528 Trompeta
Scris de: Simionescu Andrei din Aprilie 10, 2010, 15:39:08
Greşeala mea a fost că am crezut că e vorba de un if, dar era vorba de un while.


Titlul: Răspuns: 528 Trompeta
Scris de: FMI Ciprian Olariu din Noiembrie 24, 2011, 20:45:18
(stiu ca nu s-a mai postat de mult)
Tot obtin 70pct cu TLE si am incercat de toate : stack din STL,vector din STL,stiva obisnuita(vector char cu un int vf=-1),am despartit for-ul in doua ca sa pot elimina la fiecare cate o conditie din while-ul care imi scoate din stiva,am pus locale sirul si stiva ca sa le acceseze mai rapid,si tot iau 70  ](*,)  Poate sa ma ajute cineva cu 100pct? (sa-i dau sursa prin PM sa vada ce se poate optimiza)


L.E. : s-a rezolvat  :D


Titlul: Răspuns: 528 Trompeta
Scris de: Salajan Razvan din Martie 08, 2012, 22:49:49
Un ajutor pentru optimizare daca o pot numi asa. Am incercat stiva implementata "manual" stiva din stl sirul citit ca un sir de caractere dar degeaba i`au doar 70 de pct cu tle pe ulltimele 3.


Titlul: Răspuns: 528 Trompeta
Scris de: UAIC.VlasCatalin din Martie 09, 2012, 00:02:51
Eu luam TLE pe ultimile trei teste cind scriam rezultatul caracter cu caracter, iar cind am retinut solutia intr-un vector si l-am afisat pe tot deodata a mers  :-'


Titlul: Răspuns: 528 Trompeta
Scris de: Chiriac Andrei din Decembrie 26, 2013, 15:43:49
Ideea lui ctlin04 e geniala.
Tine-ti stiva ca un vector de char si afiseaza-l deodata si ia 100 p.  :thumbup:


Titlul: Răspuns: 528 Trompeta
Scris de: Mercea Otniel din Februarie 14, 2015, 21:07:05
ce se intampla cand nu pot imbunatatii rezultatul? adaug numerele in continuare? si care este complexitatea optima?


Titlul: Răspuns: 528 Trompeta
Scris de: Tony Frum din Octombrie 12, 2015, 13:31:19
Am lucrat cu vectori din stl si imi dadea 70 afisand element cu element.
Daca afisati geva gen:
"
string strC(vec.begin(), vec.end());
  cout << "Here is strC, which is constructed from a vector:\n";
  cout << strC << endl;
"
primiti 100

Afisarea are legatura cu iteratorii sau cv de genu. Nu stiu daca se putea optimiza altceva, pur si simplu operezi pe o stiva.


Titlul: Răspuns: 528 Trompeta
Scris de: Tanasa Stefan din Iunie 21, 2016, 22:44:33
pentru exemplul:

20 7
38942095073801240576

nu ar trebui sa dea: 8997876?  :-k
vreau sa ma asigur daca am inteles bine exemplul initial pentru ca pare prea naspa.


Titlul: Răspuns: 528 Trompeta
Scris de: Vintur Cristian din Iunie 22, 2016, 13:07:21
raspunsul corect este
9984576