Pagini: [1] 2 3   În jos
  Imprimă  
Ajutor Subiect: 018 Cautare binara  (Citit de 42755 ori)
0 Utilizatori şi 2 Vizitatori pe acest subiect.
filipb
Nu mai tace
*****

Karma: 232
Deconectat Deconectat

Mesaje: 929



Vezi Profilul
« : Iunie 10, 2008, 14:59:54 »

Aici puteti discuta despre problema Cautare binara.
Memorat
Robybrasov
Strain
*

Karma: 3
Deconectat Deconectat

Mesaje: 33



Vezi Profilul
« Răspunde #1 : Iunie 18, 2008, 18:47:44 »

in enunt se cere afisarea numarului cel mai mic mai mare sau egal si cel mai mare mai mic sau egal ca x. asta inseamna ca pentru sirul 5 9 12 12 12 17 23 si x=12 se pot afisa oricare dintre pozitiile 3, 4, 5 pentru ca 12 se afla pe toate acele pozitii, adica 12=12. care pozitie trebuie afisata?
Memorat
gabitzish1
Moderatori infoarena
Nu mai tace
*****

Karma: 321
Deconectat Deconectat

Mesaje: 926



Vezi Profilul
« Răspunde #2 : Iunie 18, 2008, 18:54:57 »

Din ce am inteles eu, si ce am iplementat de 100 de puncte, in primul caz cand trebuie afisat cel mai mic numar mai mare sau egal cu x, rezultatul e 3, iar in cazul cu cel mai mare numar mai mic sau egal, rezultatul e 5.
Memorat
Robybrasov
Strain
*

Karma: 3
Deconectat Deconectat

Mesaje: 33



Vezi Profilul
« Răspunde #3 : Iunie 18, 2008, 19:06:59 »

da, am inteles enuntul si mai sus am dat un exemplu de la mine pentru ca intr-un sir crescator o valoare poate sa fie de mai multe ori.
in testele 5 si 7 o valoare apare de doua ori, programul meu afisand pozitia mai mare pentru ultimul caz al problemei, desi teoretic ambele pozitii sunt corecte (enunt: mai mic sau egal/mai mare sau egal)
Memorat
gabitzish1
Moderatori infoarena
Nu mai tace
*****

Karma: 321
Deconectat Deconectat

Mesaje: 926



Vezi Profilul
« Răspunde #4 : Iunie 18, 2008, 19:13:34 »

Referitor la exemplul tau am raspuns.
Pentru cel mai mic numar mai mare sau egal cu x trebuie afisata pozitia cea mai mica, iar pentru cel mai mare numar mai mare sau egal cu x trebuie pozitia cea mai mare.
Memorat
philip
Strain
*

Karma: 5
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« Răspunde #5 : Martie 02, 2009, 17:21:55 »

La 2 din teste imi iese din timp cu cateva milisecunde... o data la 8 si 10, alta data la 9 si 10:
http://infoarena.ro/job_detail/269188
http://infoarena.ro/job_detail/269185
Cum mai poate fi optimizat?

P.S. Lucrez in pascal.

[Later edit]
Am incercat si cu 3 functii distincte, pt fiecare tip de intrebare. Acum imi iese din timp doar cate un test: 8 sau 10.
http://infoarena.ro/job_detail/269245
http://infoarena.ro/job_detail/269211
Poate ca daca mai incerc sa le evaluez, le prind o data pe toate in timp  Brick wall
Este vreo sursa in pascal cu 100 de pct?

[editat de moderator] nu posta consecutiv. Editeaza-ti ultimul post.
« Ultima modificare: Martie 02, 2009, 19:25:06 de către Savin Tiberiu » Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #6 : Martie 02, 2009, 19:26:40 »

evaluatorul iti opreste programul automat in momentul in care a depasit timpul de executie. Deci desi tie iti arata ca programul tau a depasit timpul de executie cu cateva milisecunde, de fapt acela e timpul la care a fost oprit, nu se stie cat ar mai fi durat pana programul tau s-ar fi terminat.
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #7 : Martie 02, 2009, 21:54:02 »

Programul tau intra in 360 de milisecunde pe testul maxim. Incearca sa parsezi citirea, avand in vedere ca o sursa in c intra in 210 milisecunde. In rest sursa imi pare ok ca complexitate Smile.

To admins: Se poate mari limita de timp la 0.35? Avand in vedere ca o sursa cu brut depaseste acest timp, scopul arhivei educationale nefiind acela de a parsa citirea.
Memorat
philip
Strain
*

Karma: 5
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« Răspunde #8 : Martie 02, 2009, 22:52:47 »

evaluatorul iti opreste programul automat in momentul in care a depasit timpul de executie. Deci desi tie iti arata ca programul tau a depasit timpul de executie cu cateva milisecunde, de fapt acela e timpul la care a fost oprit, nu se stie cat ar mai fi durat pana programul tau s-ar fi terminat.

Da, insa uneori intra in timp, alteori nu. De asta tind sa cred ca nu depaseste cu mult.

Programul tau intra in 360 de milisecunde pe testul maxim. Incearca sa parsezi citirea, avand in vedere ca o sursa in c intra in 210 milisecunde. In rest sursa imi pare ok ca complexitate Smile.

To admins: Se poate mari limita de timp la 0.35? Avand in vedere ca o sursa cu brut depaseste acest timp, scopul arhivei educationale nefiind acela de a parsa citirea.

Mi se pare o idee buna.  Ok
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #9 : Martie 02, 2009, 23:16:05 »

Ideea e ca depaseste cu aproximativ 60 de ms, Am trimis programul tau dupa ce am modificat limita de timp la 0.5 si iti intra in 0.36 Smile. Dupaia desigur am facut-o la loc 0.3. Daca nu ma crezi te poti uita pe ultima sursa trimisa de mine la cautare binara Smile.
Memorat
philip
Strain
*

Karma: 5
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« Răspunde #10 : Martie 03, 2009, 00:06:27 »

Ideea e ca depaseste cu aproximativ 60 de ms, Am trimis programul tau dupa ce am modificat limita de timp la 0.5 si iti intra in 0.36 Smile. Dupaia desigur am facut-o la loc 0.3. Daca nu ma crezi te poti uita pe ultima sursa trimisa de mine la cautare binara Smile.

Dar timpul variaza destul de tare. Au fost evaluari la care mi-a intrat si testul maxim (http://infoarena.ro/job_detail/269245).
Am parsat cautarea (pentru prima data; sper ca am facut ce trebuia), si acum iese din timp la toate testele dinultima grupa.
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #11 : Martie 03, 2009, 00:53:09 »

Din ce am vazut eu, tu parsezi cu buffer de 255 de caractere, cat e string-ul normal. Din ce imi amintesc din pascal, poti declara si string de 1 milion, cat poate fi o linie din fisier. E mai rapid sa citesti tot randul decat bucati din el.

Nu sunt sigur, dar parca mergea ceva de genul:

Cod:
var s : string[1100010];
Memorat
philip
Strain
*

Karma: 5
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« Răspunde #12 : Martie 03, 2009, 10:07:25 »

Nu este in free pascal string cu mai mult de 255 caractere.
Memorat
CezarMocan
Nu mai tace
*****

Karma: 252
Deconectat Deconectat

Mesaje: 567



Vezi Profilul
« Răspunde #13 : Martie 03, 2009, 12:15:12 »

Ba da, este. Se numeste ansistring Smile.
Memorat
philip
Strain
*

Karma: 5
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« Răspunde #14 : Martie 03, 2009, 14:35:07 »

Merge cu ansistring, dar acum am probleme cu limita de memorie.  Smile

L.E. Poate ca ii totusi buna ideea cu ridicarea limitei de timp.  wink
To admins: Se poate mari limita de timp la 0.35? Avand in vedere ca o sursa cu brut depaseste acest timp, scopul arhivei educationale nefiind acela de a parsa citirea.
« Ultima modificare: Martie 03, 2009, 21:56:30 de către Philip » Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #15 : Martie 03, 2009, 22:58:01 »

De ce nu incerci sa citesti intr-un array de char?
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
philip
Strain
*

Karma: 5
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« Răspunde #16 : Martie 03, 2009, 23:18:57 »

De ce ar fi citirea caracter cu caracter mai rapida decat citirea cu numere?
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #17 : Martie 04, 2009, 00:58:48 »

Citat
To admins: Se poate mari limita de timp la 0.35? Avand in vedere ca o sursa cu brut depaseste acest timp, scopul arhivei educationale nefiind acela de a parsa citirea.

Toate problemele din arhiva educationala vor fi revizuite in timp. Daca vom considera necesar in momentul revizuirii, vom modifica limita de timp.
Memorat

Am zis Mr. Green
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #18 : Martie 04, 2009, 08:39:18 »

De ce ar fi citirea caracter cu caracter mai rapida decat citirea cu numere?
Nu neaparat citirea char cu char, ci citirea in "bucati" mai mari decat e un int/long. In general bucati de lungime putere a lui 2.
Memorat
philip
Strain
*

Karma: 5
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« Răspunde #19 : Martie 04, 2009, 11:37:06 »

Dar un array de char nu poate fi citit decat caracter cu caracter, asta inseamna "bucati" mai mici decat un numar intreg.
Memorat
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #20 : Martie 04, 2009, 12:28:53 »

Ba poti citi, cu blockread de exemplu: citeste aici. Cineva care stie pascal mai bine ca mine sa ma corecteze/completeze va rog Smile
Memorat
philip
Strain
*

Karma: 5
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« Răspunde #21 : Martie 05, 2009, 22:31:34 »

Trec pe c++ Not talking
Memorat
peanutz
Nu mai tace
*****

Karma: 10
Deconectat Deconectat

Mesaje: 296



Vezi Profilul
« Răspunde #22 : Martie 10, 2009, 15:25:14 »

Pana la urma cum se acorda punctaj pe urmatoarele 2 cerinte?

1 x - pozitia pe care se afla elementul cel mai mare mai mic sau egal cu x in sir. Se garanteaza ca cel mai mic numar al sirului este mai mic sau egal decat x
2 x - pozitia pe care se afla elementul cel mai mic mai mare sau egal cu x in sir. Se garanteaza ca cel mai mare numar din sir este mai mare sau egal decat x

Din enunt nu se intelege ca trebuie cea mai mare pozitie posibila(1) sau cea mai mica pozitie posibila(2)... daca se iau in considerare doar astea doua nu e corect..
Memorat

....staind....
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #23 : Martie 10, 2009, 22:45:03 »

Pentru operatia de tip 1, elementul cel mai mare mai mic decat x, in caz ca sunt mai multe egale (desi nu cred), iei pozitia cea mai mare. La 2 invers, pozitia cea mai mica pe care apare.
Memorat
peanutz
Nu mai tace
*****

Karma: 10
Deconectat Deconectat

Mesaje: 296



Vezi Profilul
« Răspunde #24 : Martie 13, 2009, 16:59:41 »

Nu crezi? Smile

verifica sursa jobului
http://infoarena.ro/job_detail/280859

Chiar cred ca ar fi necesara o modificare in enunt(sau in evaluator).
Memorat

....staind....
Pagini: [1] 2 3   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines