Titlul: 474 Teams Scris de: Filip Cristian Buruiana din Iulie 04, 2007, 11:14:08 Aici puteţi discuta despre problema Teams (http://infoarena.ro/problema/teams).
Titlul: Răspuns: 474 Teams Scris de: Maria Stanciu din Martie 31, 2008, 16:10:33 Am facut problema retinand in v[ i ] numarul de aparitii ale lui i in sirul de valori.
Totusi iau 2 TLE-uri desi am incercat sa fac citirea si cu streamuri si in c. Voi cum ati reusit sa luati 100? P.S.: ce inseamna sa parsezi citirea? Titlul: Răspuns: 474 Teams Scris de: Savin Tiberiu din Martie 31, 2008, 16:20:07 citesti o linie intreaga ca string ( eu folosesc fgets ptr asta) si apoi iti scoti numerele din string.
uite un cod simplu care citeste elementele unui vector: Cod: fgets(s,NMAX,stdin); Titlul: Răspuns: 474 Teams Scris de: Andrei Misarca din Aprilie 09, 2008, 20:06:26 Si e mai rapida citirea asa? :)
Titlul: Răspuns: 474 Teams Scris de: Andrei Grigorean din Aprilie 09, 2008, 20:21:47 Da, e mai rapida. Cu cat sunt mai multe numere pe o linie cu atat se simte mai tare diferenta intre o citire normala si parsare.
Titlul: Răspuns: 474 Teams Scris de: Andrei Misarca din Aprilie 09, 2008, 20:39:25 Dar de ce? Scanf e mai incet decat o adunare + o inmultire? Si citirea unei e asa rapida?
Titlul: Răspuns: 474 Teams Scris de: Bogdan-Alexandru Stoica din Aprilie 09, 2008, 21:32:07 functia scanf are mai multi parametrii care se efectueaza mai incet decat o adunare si o inmultire, plus ca ea intoarce numarul de variabile (din cele solicitate de tine) citite "cu succes". pentru mai multe detalii despre cum functioneaza scanf citete aici (http://en.wikipedia.org/wiki/Scanf).
Titlul: Răspuns: 474 Teams Scris de: Ciocan Andrei din Aprilie 10, 2008, 16:30:06 Am o mica nelamurire. Logic, algoritmul meu e bun; si eficient. Tot nu pot sa-mi dau seama pe unde s-a strecurat vreo eroare, de iau WA pe testele 5,7,9 si 10. Timpul de executie este bun. Am explicat cum l-am gandit in sursa.
Ma poate ajuta cineva,va rog? Titlul: Răspuns: 474 Teams Scris de: Pripoae Teodor Anton din Aprilie 10, 2008, 18:37:40 pentru inceput de ce nu le declari pe toate int ? int-ul pe gcc e la fel ca long-ul dar e posibil sa rezulte probleme de aici
Titlul: Răspuns: 474 Teams Scris de: Ciocan Andrei din Aprilie 10, 2008, 19:27:38 Degeaba :sad: Tot 60... Chiar nu stiu ce ar putea fi. Un test poate ar rezolva totul.
Titlul: Răspuns: 474 Teams Scris de: MciprianM din Septembrie 17, 2008, 17:17:24 Pt AndreiD.
Daca te mai intereseaza am gasit o greseala in sursa ta(int functia cautbinar) Cod: for (i=poz+1; p;p/=2) return i+1; (In cazul in care i+1 intra int intervalul in care cauti binar). Adica trebuie gasita cea mai din stanga valoare v pt care v+v[poz]>=a; Titlul: Răspuns: 474 Teams Scris de: Mandu Dragos din Ianuarie 12, 2009, 23:09:04 am si yo o intrebare :D ....dak aplic metoda bruta dupa pt aceea care au aceeasi putere calculez doar odata? : comb*=f[v[ i ]];altfel ++comb; ](*,)....ar intra in timp ?sau gresesc.... :sad:
[editat de moderator] Cand scrii [ i ] lasa spatii Titlul: Răspuns: 474 Teams Scris de: Alexandru Gherghe din Mai 10, 2009, 21:08:22 sortez vectoru si pt fiecare element folosesc cautarea binara pt a cauta cea mai mica pozitie din vector pt care se poate forma o pereche si cea mai mare pozitie. apoi daca elementul meu initial se afla in interval sau capete, la solutie adaug doar poz2-poz1, altfel adaug sol+=poz2-poz1+1; unde gresesc?
va rog frumos, ati putea posta inca un test din cele date? eu iau 0 puncte si pe testele mele sursa merge bine.... Titlul: Răspuns: 474 Teams Scris de: Andrici Cezar din Mai 11, 2009, 16:53:33 vezi... ai grija.. eu am facut ca tine dar vezi sa nu aiba capatat de inceput.... si ai grija ca poate nu gaseste ultima pozitie adica pana cand <=b poate orice suma da <=b ,,, daca nu faci asa detaliaza oleac sursa
Titlul: Răspuns: 474 Teams Scris de: Alexandru Gherghe din Mai 11, 2009, 20:09:24 pai faza e ca gaseste mereu pozitia cea mai din capat... adica practic cand a gasit valoarea intr-un anumit interval restrange oricum acel interval pana cand capatul din stanga ajunge masi mare ca cel din dreapta...
Titlul: Răspuns: 474 Teams Scris de: A Cosmina - vechi din Iunie 16, 2009, 15:08:16 Nu pricep de ce iau 0 puncte pe ea. La mine pe calculator merge perfect si am verificat pe mai multe texte.
Citat Killed by signal 11(SIGSEGV). asa apare peste tot. Ce bug as putea avea? :-k Ruleaza in 5 secude, cam depasesc limita de timp...Ce as putea sa-i fac sa se incadreze in timp? Titlul: Răspuns: 474 Teams Scris de: Dragos Oprica din Iunie 16, 2009, 21:49:06 Nu pricep de ce iau 0 puncte pe ea. La mine pe calculator merge perfect si am verificat pe mai multe texte. Citat Killed by signal 11(SIGSEGV). asa apare peste tot. Ce bug as putea avea? :-k Ruleaza in 5 secude, cam depasesc limita de timp...Ce as putea sa-i fac sa se incadreze in timp? In primul rand, pentru erorile returnate de evaluator poti consulta: http://infoarena.ro/documentatie/evaluator , iar in al doilea rand pentru a imbunatatii solutia ta la problema Teams, poti consulta solutia oficiala: http://infoarena.ro/junior-challenge/solutii Titlul: Răspuns: 474 Teams Scris de: A Cosmina - vechi din Iunie 17, 2009, 11:00:36 Ok,mersi :)
Titlul: Răspuns: 474 Teams Scris de: aladin aladinn din August 06, 2009, 17:52:48 am facut cu un vector de 36800 de elemente ,v[ i ]=nr de elemente <= i , am si parsat citirea dar iau 50 cu wa pe ultimele 5 teste .complexitatea e O(b) ,determin pt fiecare i cate perechi pot face cu nr mai mici ca el. poate sa ma ajute cineva ? nu stiu ce as putea sa gresesc , trb nr mari?
Titlul: Răspuns: 474 Teams Scris de: Rosca Valentin din Octombrie 28, 2009, 09:47:50 cum as putea sa scurtez 2 foruri?
Cod: for(i=1;i<=n-q;i++) iau 70 pt. Titlul: Răspuns: 474 Teams Scris de: Emanuel Cinca din Octombrie 28, 2009, 18:42:29 Cautare binara.
Titlul: Răspuns: 474 Teams Scris de: Rosca Valentin din Octombrie 29, 2009, 17:58:01 Si ceva mai putin complicat nu este? :-k
Pt. 80 de pt. ca sigur mai faceti un vector in care sa retineti nr.<=b-1,si citirea recursiva. Titlul: Răspuns: 474 Teams Scris de: UAIC.VlasCatalin din Ianuarie 05, 2012, 00:01:57 Se poate si fara cautare binara si intra mai bine in timp, chiar si fara parsare T_max=24 ms, trebue doar sa parcurgi de trei ori un vector de la valoarea minima pina la valoarea maxima a sirului :D \:D/
Titlul: Răspuns: 474 Teams Scris de: cius catalin din Ianuarie 10, 2012, 14:15:46 Ce nu-i bn ca iau numa 60
Cod: for(i=1;i<n;i++) Editat de admin: Foloseste tagul "code" cand postezi surse. Titlul: Răspuns: 474 Teams Scris de: Paul-Dan Baltescu din Ianuarie 10, 2012, 15:18:36 Nu-i bn complexitatea.
Titlul: Răspuns: 474 Teams Scris de: Aiordachioaei Marius din Iunie 04, 2012, 16:20:25 de ce iau 0 puncte pe urmatorul cod?
Cod: scanf("%d%d%d",&n,&a,&b);cin.get();gets(s); Titlul: Răspuns: 474 Teams Scris de: Cosmin Rusu din Ianuarie 05, 2013, 18:34:47 Buna. Am incercat sa rezolv problema asta cu cautare binara. Am doua surse una care ia 90 de puncte cu TLE pe ultimul test, si una cu 0 puncte cu Incorect pe fiecare. Prima face citirea pe streamuri, iar a doua parsata. Am incercat si cu printf si scanf dar au avut acelasi rezultat ca streamurile.
Aici sunt cele doua surse Cod: #include<fstream> Cod: #include<fstream> Practic e aceeasi chestie, dar nu inteleg totusi de ce pe a doua sursa primesc incorect ](*,). Va rog sa ma ajutati sa inteleg ce si unde gresesc. Multumesc anticiat. Titlul: Răspuns: 474 Teams Scris de: Sorin Rita din Ianuarie 05, 2013, 19:03:07 In loc sa te chinui sa parsezi ai putea sa incerci sa folosesti sort() din stl. Merge mai repede si cred ca asta e optimizarea de care ai tu nevoie.
Titlul: Răspuns: 474 Teams Scris de: Cosmin Rusu din Ianuarie 05, 2013, 20:00:47 Nu, nu e aia. Am incercat si e la fel.
Cu quickSort: http://infoarena.ro/job_detail/848689 Cu sort din algorithm http://infoarena.ro/job_detail/848678 Cu parsare, care intra lejer in timp http://infoarena.ro/job_detail/848655. In rest nu mai stiu ce sa-i fac sa mearga cu parsare bine. Mentionez ca pe exemplu merge. Titlul: Răspuns: 474 Teams Scris de: Simoiu Robert din Ianuarie 05, 2013, 20:06:55 Daca ai face int toate, ca nu trebuie long long, cred ca ti-ar intra in timp, si daca chiar vrei citire parsata, fa-o pe aia clasica cu fgets sau f.get din C/C++, care o face mai toata lumea.
[PS] Ca un sfat, lasa sort-ul din STL, isi face treaba cel mai bine. Titlul: Răspuns: 474 Teams Scris de: Alghisi Alessandro Paolo din Ianuarie 12, 2013, 17:17:24 Cod: 400 83 90 Pe testul asta cat va da ? 1308 ? :? Titlul: Răspuns: 474 Teams Scris de: Salajan Razvan din Ianuarie 12, 2013, 17:24:17 Mie 1308.
Titlul: Răspuns: 474 Teams Scris de: Alghisi Alessandro Paolo din Ianuarie 12, 2013, 17:36:00 Perfect .. atunci nu inteleg de ce iau 0 ](*,)
Dar pe testul acesta : Cod: 602 84 422 Ai putea sa-mi spui te rog cat iti da ? Cumva 54617 ? :x Titlul: Răspuns: 474 Teams Scris de: Tudor Tiplea din Ianuarie 12, 2013, 17:37:17 Da 54617 da. :)
Titlul: Răspuns: 474 Teams Scris de: Alghisi Alessandro Paolo din Ianuarie 12, 2013, 17:51:29 Ok , multumesc :) in cazul acesta nu inteleg de ce iau incorect pe TOATE testele..
Titlul: Răspuns: 474 Teams Scris de: Tudor Tiplea din Ianuarie 12, 2013, 18:01:56 Dupa f >> n >> a >> b pune getline(f,x) in loc de f.get() deoarece se pare ca sunt mai mult de 1 caracter dupa numerele n,a,b deci tu nu vei avea in string nici un numar. Vei lua 50 puncte daca faci asta. Bafta! :)
Titlul: Răspuns: 474 Teams Scris de: Alghisi Alessandro Paolo din Ianuarie 12, 2013, 18:17:59 pff ... multumesc mult :D stiu ce sa fac pentru 100 :)
Titlul: Răspuns: 474 Teams Scris de: FMI Razvan Birisan din Martie 01, 2013, 19:14:03 Poate cineva să-mi arate o citire completă cu parsare ? :'( (de la declararea fișierelor)
Titlul: Răspuns: 474 Teams Scris de: Silvia Andreea Robu din Martie 01, 2013, 19:32:07 Si eu sunt curioasa sa vad un program complet cu parsare :c
Ahh si cstdio este mai rapid decat fstream? o/ Titlul: Răspuns: 474 Teams Scris de: FMI Razvan Birisan din Martie 04, 2013, 22:40:22 Si eu sunt curioasa sa vad un program complet cu parsare :c Ahh si cstdio este mai rapid decat fstream? o/ Da,este mai rapid.Nu prea contează ,de obicei problemele de pe infoarena au o limită de timp în care se încadrează și citirea. Parsare: Cod: # include <fstream> PS: NU cred că discuția asta poate continua aici,acest topic e dedicat unei probleme din arhivă. Titlul: Răspuns: 474 Teams Scris de: fdproxy din Martie 05, 2013, 23:42:14 Poate cineva să-mi arate o citire completă cu parsare ? :'( (de la declararea fișierelor) Ai mutat intrebarea. Incerc sa-ti raspund la intrebarea originala. Nu cunosc problema. Parsarea unui fisier presupune utilizarea unui scanner (sau analizor lexical); scannerul sparge streamul de intrare in lexeme (token-uri sau cuvinte). De exemplu, sirul " 1234 test" poate fi vazut, din punct de vedere al lexemelor, astfel: "numar identificator". Urmatorul exemplu foloseste un scanner ce intoarce doua tipuri de lexeme: intreg si caracter. Apoi scannerul este folosit pentru a afisa doar numerle. Cod: #include <fstream> P.S. Am citit enuntul. Sunt nedumerit. Cum s-a ajuns la probleme legate de parsare?! Titlul: Răspuns: 474 Teams Scris de: FMI Razvan Birisan din Martie 08, 2013, 22:20:18 Am ajuns la parsare foarte ușor,am încercat să rezolv problema și depășeam timpul limită pe ultimul test.
Pentru a reduce timpul am încercat o citire cu parsare...a durat ceva până când mi-am dat seama unde greșeam,dar am reușit. :winner1: Titlul: Răspuns: 474 Teams Scris de: fdproxy din Martie 18, 2013, 13:23:49 Am inteles.
Cred ca evaluarea tine cont de timpul de citire/scriere, asa ca un cod simplu, cum ar fi cel de mai jos, n-ar trebui sa afecteze evaluarea. Incadrarea in limitele impuse trebuie sa vina din algoritm. Cod: // citire Cred ca am inteles si care sunt standardele impuse pentru astfel de probleme: foarte relaxate. Intr-un mediu real ar trebui, de exemplu sa verifici limitele, sa folosesti alocare dinamica, tabele de asociere, etc. “Parsarea”, asa cum am vazut-o eu in codul din arhiva, e o smecherie: presupune ca datele de intrare sunt formate din cifre si spatii, lucru care in realitate este de neacceptat: in fisierul de intrare poate fi orice, nu ce ne imaginam noi ca ar trebui sa fie. Si ca sa vezi cat de reala e problema, cineva a postat mai sus un set de date de intrare presupus corect, dar care este in afara limitelor date de probleme: este inclusa si valoarea zero, desi valoarea minima este 1. Rezultatul obtinut de cel ce a postat setul a fost confirmat si de o alta persoana, desi setul este gresit. Succes si mult sport. Titlul: Răspuns: 474 Teams Scris de: Potra Vlad din Februarie 06, 2014, 14:34:23 tare bizara problema asta... :thumbdown:
90: Cod: for (int i = 0; i < n; ++i) 100: Cod: for (int i = 0; i < n-1; ++i) Titlul: Răspuns: 474 Teams Scris de: Mocanu George din Februarie 09, 2014, 19:55:20 :winner1:
Am ajuns sa cred ca problema asta e blestemata... Ce greseam eu la parsare(sau citire...)?Retin doar numerele mai mici ca b. Cod: freopen("teams.in","r",stdin); |