infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: ditzone din Martie 26, 2006, 18:33:17



Titlul: 201 Lupul Urias si Rau
Scris de: ditzone din Martie 26, 2006, 18:33:17
Aici puteţi discuta despre problema Lupul Urias si Rau (http://infoarena.ro/problema/lupu).


Titlul: Raspuns: 201 Lupul Urias si Rau
Scris de: Radu Zernoveanu din Februarie 17, 2007, 12:49:22
Cum se face problema asta??? ](*,)


Titlul: Raspuns: 201 Lupul Urias si Rau
Scris de: Andrei Grigorean din Februarie 17, 2007, 12:50:52
http://infoarena.ro/preoni-2006/finala/solutii


Titlul: Raspuns: 201 Lupul Urias si Rau
Scris de: Radu Zernoveanu din Februarie 17, 2007, 13:12:09
merci mult :yahoo:


Titlul: Răspuns: 201 Lupul Urias si Rau
Scris de: Ciocan Andrei din Aprilie 15, 2008, 16:29:18
1   0ms   8kb   OK                                   4
2   0ms   12kb   Killed by signal 11(SIGSEGV).   0
3   0ms   12kb   OK                                   4
4   4ms   12kb   Killed by signal 11(SIGSEGV).   0
5   4ms   12kb   Killed by signal 11(SIGSEGV).   0
6   0ms   12kb   Killed by signal 11(SIGSEGV).   0
7   0ms   8kb   Killed by signal 11(SIGSEGV).   0
8   0ms   12kb   Killed by signal 11(SIGSEGV).   0
9   0ms   12kb   Killed by signal 11(SIGSEGV).   0
10   0ms   8kb   Killed by signal 11(SIGSEGV).   0
11   4ms   8kb   Killed by signal 11(SIGSEGV).   0
12   16ms   504kb   Killed by signal 11(SIGSEGV).   0
13   148ms   1904kb   Killed by signal 11(SIGSEGV).   0
14   104ms   1524kb   Killed by signal 11(SIGSEGV).   0
15   56ms   968kb   Killed by signal 11(SIGSEGV).   0
16   88ms   1364kb   Killed by signal 11(SIGSEGV).   0
17   116ms   1516kb   Killed by signal 11(SIGSEGV).   0
18   124ms   1732kb   Killed by signal 11(SIGSEGV).   0
19   116ms   1600kb   Killed by signal 11(SIGSEGV).   0
20   168ms   1912kb   Killed by signal 11(SIGSEGV).   0
21   144ms   1908kb   Killed by signal 11(SIGSEGV).   0
22   132ms   1988kb   OK                                  4
23   260ms   3452kb   OK                                   4
24   276ms   3452kb   OK                                   4
25   100ms   1516kb   Killed by signal 11(SIGSEGV).   0

Lucrez cu pointeri....si probabil acolo ar putea fi bug-ul. Nu stiu... :sad:


Titlul: Răspuns: 201 Lupul Urias si Rau
Scris de: Maria Stanciu din Aprilie 15, 2008, 17:38:44
Poate ca accesezi o zona de memorie inexistenta sau poate ca aloci mai mult decat iti permite memoria s-o faci  :).

"11(SIGSEGV): Segmentation fault. Asta in 99% din cazuri inseamna ca ai probleme cu accesul la memorie. Ai iesit din limitele unui vector, ai facut stack overflow, etc."

http://infoarena.ro/documentatie/evaluator


Titlul: Răspuns: 201 Lupul Urias si Rau
Scris de: Savin Tiberiu din Aprilie 15, 2008, 18:18:59
@ Ciocan Andrei: Poate ca nu sunt eu persoana cea mai in masura care sa iti spuna cum sa iti identezi sursele, dar sunt destul de sigur ca nu e bine sa lasi cate un rand dupa fiecare instructiune. Am incercat sa ma uit pe ea si cand am vazut ca 70% din sursa sunt linii goale si cat de intinsa e am renuntat. Incearca sa iti scrii sursele in asa fel incat fiecare bucata de cod care face un anumit lucru sa o poti vedea intrun ecran.


Titlul: Răspuns: 201 Lupul Urias si Rau
Scris de: A Andrei din Iulie 10, 2009, 20:00:31
Nu inteleg ce gresesc de primesc doar 8 puncte pe aceasta problema.
Ce fac?
Simplu :
1. Calculez intr`un vector T pasul maxim la care o oaie i poate sa fie luata de lup.
2. Sortez aceste valori
3. Pentru fiecare pas extrag valorile din vectorul sortat cu cei mai multi pasi disponibili si ii adaug intr`un alt vector ce reprezinta un heap
4. La fiecare pas extrag maximul din vector(radacina si o adaug la solutie), elimin valoarea din arbore si reconstruiesc heapul.

Daca cineva are rabdare sa se uite pe sursa raman dator :D
http://infoarena.ro/job_detail/330588?action=view-source

Cam asa arata HeapDown`ul (sift)
Cod:
void heapDown(long long int v)
{
long long int w = v*2;
while(w < k)
{
if(w+1 < k && Heap[w+1] > Heap[w]) w++;
if(Heap[v] >= Heap[w]) return;

Heap[w] ^= Heap[v] ^= Heap[w] ^= Heap[v];
v = w;
w *= 2;
}
}


Titlul: Răspuns: 201 Lupul Urias si Rau
Scris de: Popescu Marius din Iulie 11, 2009, 10:26:33
  Trimite-mi un PM cu sursa ta si o sa incerc sa vad ce ai gresit ... Acum am scos-o si eu de 100 de p in timp ce citeam mesajul tau mi-am dat seama ce e gresit in sursa mea (pentru cei care iau 88 de p cu incorect pe testele 10,17 si 20 cand extrag maximul din heap sa se intrebe mai intai daca heapul nu este gol (eu din cauza asta luam incorect)) :yahoo: .
  Am problema proaspata in minte si as putea sa te ajut .


Titlul: Răspuns: 201 Lupul Urias si Rau
Scris de: A Andrei din Iulie 11, 2009, 15:20:15
Multumesc de ajutor :D


Titlul: Răspuns: 201 Lupul Urias si Rau
Scris de: FMI Irina Iancu din August 24, 2009, 17:04:09
Nu stiu de ce iau doar 80p.
Retin pentru fiecare timp maxim, indicii pentru care se obtine. Apoi iau fiecare valoare i de la T_max la 1 si adaug in heap toate cantitatile care au timpul maxim = i, dupa care extrag maximul din heap si il adun la solutie.
Mai exista cazuri particulare sau altceva de luat in calcul?  ???


Titlul: Răspuns: 201 Lupul Urias si Rau
Scris de: speedzeal din August 30, 2009, 13:58:10
Nu stiu de ce iau doar 80p.
Retin pentru fiecare timp maxim, indicii pentru care se obtine. Apoi iau fiecare valoare i de la T_max la 1 si adaug in heap toate cantitatile care au timpul maxim = i, dupa care extrag maximul din heap si il adun la solutie.
Mai exista cazuri particulare sau altceva de luat in calcul?  ???
Vezi ca rezultatul trebuie sa fie pe long long int.Eu luam 80 de puncte pentru ca variabila in care tineam rezultatul nu era pe long long int.


Titlul: Răspuns: 201 Lupul Urias si Rau
Scris de: FMI Irina Iancu din August 30, 2009, 20:12:34
Asta era!  :yahoo: Mulţam frumos ! :D


Titlul: Răspuns: 201 Lupul Urias si Rau
Scris de: Petru Trimbitas din Martie 31, 2010, 11:46:21
am 2 probleme : *ce inseamna Killed by signal 6(SIGABRT).
*am rezolvat chiar cu solutia oficiala si nu ma incadrez in timp. Unde gresesc?


Titlul: Răspuns: 201 Lupul Urias si Rau
Scris de: Avramescu Cristian din Martie 15, 2013, 20:40:13
cat va da pe testul urmator
3 6 2
4 6
4 10
6 8
mie cu sursa de 100 imi da 18 si cred ca raspunsul corect ar fi 16 :-k.


Titlul: Răspuns: 201 Lupul Urias si Rau
Scris de: Radu-Andrei Szasz din Martie 15, 2013, 21:34:49
E 18 raspunsul corect. Prima data va fi luata oaia 3(e la distanta 6, deci e ok), iar mai apoi oaia 2(e si ea la distanta 6, deci e ok).


Titlul: Răspuns: 201 Lupul Urias si Rau
Scris de: Avramescu Cristian din Martie 15, 2013, 23:32:31
a..am  inteles eu gresit o chestie  din enunt   :D


Titlul: Răspuns: 201 Lupul Urias si Rau
Scris de: Popescu George din Octombrie 15, 2014, 18:09:42
Imi spune si mie cineva care e diferenta intre functiile astea doua de comparare?
struct oaie
{
    int t,l;
}v[NMAX];

bool cmp(oaie p,oaie r)
{
    if (p.t<r.t) return 0;
    return 1;
}//prima

bool cmp(oaie a,oaie b)
{
    return (a.t>b.t);
}// a doua

Folosind prima functie iau 16p(cu TLE pe majoritatea testelor), iar cu cea de a doua iau 100... De ce?  ](*,) ](*,) ](*,)


Titlul: Răspuns: 201 Lupul Urias si Rau
Scris de: Mihai Calancea din Octombrie 16, 2014, 12:11:27
Funcția de comparare trebuie să întoarcă True dacă primul element ar trebui să apară înaintea celui de al doilea în sortare. Dacă tu zici că A trebuie să ajunga în fața lui B atunci când A >= B, se poate întâmpla ca sort-ul să apeleze și cmp(A, B) și cmp(B, A) și să-i dea ambele True, which is a big no-no, din motive destul de evidente  :).


Titlul: Răspuns: 201 Lupul Urias si Rau
Scris de: Popescu George din Octombrie 19, 2014, 16:51:09
Interesant, mersi mult :D


Titlul: Răspuns: 201 Lupul Urias si Rau
Scris de: Potra Vlad din Decembrie 18, 2014, 01:26:47
http://www.infoarena.ro/job_detail/1294725?action=view-source

Rog pe cineva sa se uite peste sursa mea, sa imi spuna de ce iau doar 12 puncte cand orice test facut manual merge.


Titlul: Răspuns: 201 Lupul Urias si Rau
Scris de: George Marcus din Mai 05, 2015, 16:38:49
Cum de nu s-a facut niciun test cu distanta maxima a oilor 2^31 - 1? Majoritatea surselor de 100 iau TLE pe un astfel de test. Mai sunt si multe surse de 100 care ar trebui sa ia WA.


Titlul: Răspuns: 201 Lupul Urias si Rau
Scris de: Mihai Calancea din Mai 05, 2015, 19:48:19
Probabil vei întâlni situația asta la foarte multe probleme vechi de pe infoarena/din România. Noi suntem obișnuiți acum cu TC, CF, ACM-ICPC, știm că o greșeală de genul ăsta te poate costa totul și ne e ușor să intrăm pe challenge mode. Impresia mea, posibil să greșesc totuși, e că testarea era mult mai lejeră pe vremuri. Se vede chestia asta și din tradiția cu 10-20 de teste, număr care mie îmi pare acum periculos de mic în 90% din cazuri.