|
Titlul: 477 Alee Scris de: Adrian Diaconu din August 14, 2007, 22:24:15 Aici puteţi discuta despre problema Alee (http://infoarena.ro/problema/alee).
Titlul: Răspuns: 477 Alee Scris de: E1 La5c01 din Februarie 22, 2008, 21:01:18 de ce nu-mi compileaza sursa?? ](*,)
Cod: 1. {$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S-,T-,V+,X+} editat de moderator: foloseste tagul "[ code ]" cand postezi cod Titlul: Răspuns: 477 Alee Scris de: Paul-Dan Baltescu din Februarie 22, 2008, 22:14:22 Citat user.fpc(41,32) Error: Illegal assignment to for-loop variable "x" user.fpc(41,37) Error: Illegal assignment to for-loop variable "y" Erorile de compilare sunt in general destul de clare (ca si acum). Nu ai voie sa modifici contorul intr-un for. Incearca alta data sa te descurci singur si daca chiar nu reusesti, abia atunci posteaza. Titlul: Răspuns: 477 Alee Scris de: Prigoana Cristian din Februarie 25, 2008, 22:06:04 am facut problema de 90 puncte...iese din timp la un test...cum ati rezolvat-o voi?...care ati luat 100...eu am facut pur si simplu , un lee clasic... ???
Titlul: Răspuns: 477 Alee Scris de: Florian Marcu din Februarie 25, 2008, 22:17:35 Lee clasic trebuie. Vezi poate iti intra in vreun ciclu infinit... Nu prea e nimic special la aceasta problema. S-au pastrat testele de la oji 2007. Deci poti sa le iei de pe olimpiada.info. Succes :thumbup:
Titlul: Răspuns: 477 Alee Scris de: Tabara Mihai din Februarie 25, 2008, 23:07:42 am facut problema de 90 puncte...iese din timp la un test...cum ati rezolvat-o voi?...care ati luat 100...eu am facut pur si simplu , un lee clasic... ??? Si eu am patit la fel. Incearca sa maresti coada ... :thumbup:Titlul: Răspuns: 477 Alee Scris de: Andrei Misarca din Martie 23, 2008, 21:08:19 Sau incearca sa faci dinamic, si nu mai stres cu maritu cozii :peacefingers:
Titlul: Răspuns: 477 Alee Scris de: Andrei Misarca din Decembrie 21, 2008, 21:37:33 Incearca sa mai maresti putin coada, tu ai declarat-o de exact 175*175 , si pt testele in care matricea are 175*175 elemente iese din memorie
Titlul: Răspuns: 477 Alee Scris de: Flaviu Pepelea din Decembrie 21, 2008, 21:49:50 cam urat sa pui sursa pe forum sa iti caute altul erorile :D
Titlul: Răspuns: 477 Alee Scris de: Andrei Grigorean din Decembrie 21, 2008, 23:00:14 cam urat sa pui sursa pe forum sa iti caute altul erorile :D Eh, e foarte util uneori sa fii in stare sa gasesti erorile rapid ;). Nu stiu cat de castigat este cel care pune sursa pe forum, insa cel care gaseste bugurile cu siguranta se alege cu ceva. Titlul: Răspuns: 477 Alee Scris de: speedzeal din Ianuarie 17, 2009, 19:04:35 Am o nedumerire...daca compilez sursa cu compilatorul de pe infoarena pentru C++ iau 100 in schimb primesc erori pe evaluatoru OJI(chiar crash)...dupa calculele mele am folosit memorie statica 177*177*2+9*2+31000*2=124676 bytes=124.676 kilobytes...tinand cont ca la OJI se da 640 kilobytes>124.676 kilobytes nu cred ca am depasit memoria dispusa...unde gresesc?
Cod: #include<iostream.h> Titlul: Răspuns: 477 Alee Scris de: Andrei Grigorean din Ianuarie 18, 2009, 18:12:44 Tu aloci pe stiva (in interiorul functiilor). Scoate toate variabilele mari in afara functiei main() si iti va merge.
Titlul: Răspuns: 477 Alee Scris de: speedzeal din Ianuarie 18, 2009, 19:52:00 Tu aloci pe stiva (in interiorul functiilor). Scoate toate variabilele mari in afara functiei main() si iti va merge. am scos "structura orice" in afara mainului.Asa aloc static (31000*2)=62000<64000(limita) bytes(coada) in stiva(in functia main) aloc (9(variabile)+177*177(matricea parc))*2=62676<65520 bytes.....si tot imi da abnormal program termination...de ce?Cod: #include<iostream.h> Titlul: Răspuns: 477 Alee Scris de: Pripoae Teodor Anton din Ianuarie 18, 2009, 22:06:43 Pe Borland sunt teoretic 640 de kb, dar nu poti avea acces la toata memoria decat lucrand cu pointeri. Incearca sa gasesti o solutie mai simpla. Eu nu folosesc decat 16 kb de memorie pe majoritatea testelor, doar pe testul maxim folosesc 288 kb.
Scoate matricea parc din main. Ocupa 177 * 177 * 2 ~= 62 de kb daca e in main si spargi stiva. Spor :) Titlul: Răspuns: 477 Alee Scris de: speedzeal din Ianuarie 18, 2009, 22:49:00 Pe Borland sunt teoretic 640 de kb, dar nu poti avea acces la toata memoria decat lucrand cu pointeri. Incearca sa gasesti o solutie mai simpla. Eu nu folosesc decat 16 kb de memorie pe majoritatea testelor, doar pe testul maxim folosesc 288 kb. vrei sa zici ca,compilatorul Borland C(care daca nu gresesc este compilatorul lui Borland C++ 3.1 si care e la OJI pt limabju de programare C++) dispune de 640 KB(KB-kilobytes,Kb-kilobits)?eu stiam ca pentru datele alocate static dispun de 64 Kilobytes,pentru stiva maxim 65 Kilobytes iar pentru heap 655 kilobytes pe compilatorul de mai sus...eu problema am rezolvat-o(compiland-o cu g++,gcc) dar pe mine ma intereseaza de ce nu pot aloca memoria respectiva cu compilatorul Borland C...in care zona pun prea mult?....problema se rezolva cu un Lee clasic...singura optimizare la problema aceasta ar fi sa implementez coada dinamic...inca ceva pe stiva ai 65 Kilobytes,de ce sa se sparga la 62 kilobytes?....daka pun coada statica si restu pe stiva(in main) tot abnormal program termination imi da... Scoate matricea parc din main. Ocupa 177 * 177 * 2 ~= 62 de kb daca e in main si spargi stiva. Spor :) Titlul: Răspuns: 477 Alee Scris de: Pripoae Teodor Anton din Ianuarie 19, 2009, 10:53:17 Incearca sa implementezi coada dinamic si scapi de probleme. Daca nu ma insel asa era implementata si in sursa oficiala.
Spor :) Titlul: Răspuns: 477 Alee Scris de: speedzeal din Ianuarie 21, 2009, 23:22:52 Incearca sa implementezi coada dinamic si scapi de probleme. Daca nu ma insel asa era implementata si in sursa oficiala. In sursa oficiala a fost implementata coada static si in C,nu in C++(de aceea pt ca nu se poate face cu alocare statica in C++).Spor :) Titlul: Răspuns: 477 Alee Scris de: Pripoae Teodor Anton din Ianuarie 22, 2009, 16:03:49 Cum adica a fost implementata in C nu in C++? Se aloca EXACT la fel static in C ca in C++. La alocarea dinamica e diferit.
Titlul: Răspuns: 477 Alee Scris de: speedzeal din Ianuarie 22, 2009, 16:49:15 Cum adica a fost implementata in C nu in C++? Se aloca EXACT la fel static in C ca in C++. La alocarea dinamica e diferit. nu cunosc prea multe in C...mai mult cunosc C++..am observat ca la solutii(olimpiade) in general le rezolva in C daka sunt probleme la implementare(de genu memorie) si in rest in c++(poate gresesc)...oricum,dupa cat am intors problema nu cred ca se poate face cu compilatorul Borland C si cu limbajul c++ cu alocare statica a cozii... ba mai mult am implementat coada dinamic iar nu ma lasa ka matricea(parcul) sa-l fak mai mult de [ 170 ] [ 170 ](daka pun [ 175 ] [ 175 ] in afara stivei imi da abnormal program termination iar daka pun in stiva imi da null pointer assigment pe comp Borland C) Titlul: Răspuns: 477 Alee Scris de: Pripoae Teodor Anton din Ianuarie 22, 2009, 18:54:21 Tot ce merge in C merge si in C++, C++ fiind C + clase + stl. In rest sunt foarte mici diferente intre C si C++, la nivelul variabilelor adresa, la structuri, si la alocarea memoriei dinamic (in c++ se poate aloca in 2 feluri, cu malloc si new), dar deja suntem off-topic. Daca vrei diferentele exacte intre C si C++ deschide un topic in categoria informatica.
Titlul: Răspuns: 477 Alee Scris de: gaboru corupt din Februarie 10, 2009, 22:35:32 am rezolvat problema cu dinamica. toate bune si frumoase exceptant testul 7 pe care iau TLE. http://infoarena.ro/job_detail/255720 .timpii la restul testelor sunt mici, deci presupun ca acolo imi cicleaza programul. unde ar putea fi gresala?
Titlul: Răspuns: 477 Alee Scris de: Flaviu Pepelea din Februarie 10, 2009, 22:37:09 Ai putea descrie putin ce faci pe-acolo si ce matrici/ vectori ai folosit.
Titlul: Răspuns: 477 Alee Scris de: gaboru corupt din Februarie 10, 2009, 22:43:12 deci... matricea initiala ii initializata cu 0 daca am drum liber, si -1 daka e pom. in locul din care pornesc pun 1, si apoi atata timp cat in matricea mea mai am elemente de 0, pentru fiecare a(i,j)==0 imi determin minimul din N,E,S,V si actualizez a(i,j) cu min+1. daka e prea explicit va rog sa-mi ziceti
Titlul: Răspuns: 477 Alee Scris de: Emanuel Cinca din Februarie 10, 2009, 23:25:14 tu faci minimul daca nu e -1... si ce faci daca in N, E, V, si S e pom si tu nu poti ajunge in punctul respectiv? :D...
ceva de genul: Cod: 0 0 -1 0 0 Titlul: Răspuns: 477 Alee Scris de: gaboru corupt din Februarie 10, 2009, 23:48:37 merge si pe exemplul acela. chiar nu stiu unde se poate impotmoli...
Titlul: Răspuns: 477 Alee Scris de: Savin Tiberiu din Februarie 11, 2009, 00:22:54 programul tau pare ca ia TLE din cauza ca are complexitate prea mare. Daca am inteles bine toata matricea la fiecare pas. Cum pot fi aproximativ N^2 pasi * N^2 pe fiecare pas => N^4 care cred ca e cam mare ptr problema asta.
Titlul: Răspuns: 477 Alee Scris de: gaboru corupt din Februarie 11, 2009, 12:06:27 probabil ca din cauza asta. oricum, a mai facut cineva prob cu dinamica de 100?
Titlul: Răspuns: 477 Alee Scris de: Flaviu Pepelea din Februarie 11, 2009, 14:24:20 De ce nu faci cu Lee ?
Titlul: Răspuns: 477 Alee Scris de: Vladimir Oltean din Martie 13, 2009, 13:17:05 tu faci minimul daca nu e -1... si ce faci daca in N, E, V, si S e pom si tu nu poti ajunge in punctul respectiv? :D... ceva de genul: Cod: 0 0 -1 0 0 daca fisierul .in ar arata cam asa Cod: 5 4 Titlul: Răspuns: 477 Alee Scris de: gaboru corupt din Martie 13, 2009, 13:35:53 0. pt ca nu poti iesi din [2,3]
Titlul: Răspuns: 477 Alee Scris de: Adrian Draghici din Aprilie 06, 2009, 15:41:01 pai si de ce ar trebui sa treaca prin [2,3]?
scopul este sa ajunga in [5,5]. eu am incorrect pe testul 8, nu-mi dau seama de ce. sunt cazuri particulare? Titlul: Răspuns: 477 Alee Scris de: Codrea Marcel din Aprilie 06, 2009, 15:50:03 Scopul este sa pleci de la o poarta si sa ajungi la alta.
Citat Scrieti un program care sa determine numarul minim de dale necesare pentru construirea unei alei continue de la o poarta la cealalta. Titlul: Răspuns: 477 Alee Scris de: Adrian Draghici din Aprilie 06, 2009, 15:55:59 pe exemplul ala era scopul sa ajunga in [5,5].
L.E.: deci e posibil ca cele 2 porti sa nu fie in zone de margine? adica sa poata fi in interior? ](*,) even later edit: nvm, am gasit. Titlul: Răspuns: 477 Alee Scris de: Udrescu Cristian din Aprilie 30, 2009, 17:56:24 nu iau decat 80 pct cu un lee clasic..nu inteleg care e problema..in mod normal ar trebui sa mearga.. ](*,)
Titlul: Răspuns: 477 Alee Scris de: Rus Alexandru din Februarie 23, 2010, 10:32:30 ce e special pe testul 4? :sad:
am facut un lee clasic si iau numai 90 de pcte, imi pica pe testul 4 cu incorect. Este ceva caz exceptie? Titlul: Răspuns: 477 Alee Scris de: Macarescu Sebastian din Iunie 26, 2010, 23:30:57 Am si eu o intrebare. Daca imi cicleaza de ce imi apare la borderou memory limit exceeded in loc de tle.
http://infoarena.ro/job_detail/466551 (http://infoarena.ro/job_detail/466551) asta ia memory limit exceedet in loc de tle, iar sursa asta ia 100 de puncte cu aceeasi memorie declarata http://infoarena.ro/job_detail/466555 (http://infoarena.ro/job_detail/466555) . Titlul: Răspuns: 477 Alee Scris de: FMI Romila Remus Arthur din Iunie 26, 2010, 23:54:36 Rezolvai in mod recursiv ?
Titlul: Răspuns: 477 Alee Scris de: Macarescu Sebastian din Iunie 27, 2010, 08:43:56 nu. Pur si simplu la sursa de care lua memory limit exceeded am modificat ceva la vecini si am luat 100.
Titlul: Răspuns: 477 Alee Scris de: Oancea Catalin din Februarie 15, 2011, 23:50:41 eu iau 80 (cu "incorect" pe testul 6 si testul 8 )
matricea are la inceput toate elementele 0 si cele cu pomi le pun -1; in punctul din care plec pun 1. daca Cod: a[i][j]==x si a[i+1][j]==0 atunci in a[i+1][j] pun x+1 si pentru fiecare element din coada marchez vecinii cand a ajuns la finish afiseaza Cod: a[x_finish][y_finish] Titlul: Răspuns: 477 Alee Scris de: Eugenie Daniel Posdarascu din Februarie 16, 2011, 14:33:42 Poate ai gresit ceva la implementare sau ai uitat un caz particular. Nu trebuie neaparat algoritmul sa fie gresit. Din moment ce ai luat 80 pct presupun ca ai o gandire corecta doar ca ai uitat un caz sau doua.
Titlul: Răspuns: 477 Alee Scris de: Oancea Catalin din Februarie 16, 2011, 19:06:42 pai folosesc algoritmul Lee ... deci ar trebui sa mearga... nu stiu ce cazuri speciale ar putea sa apara.
E obligatoriu sa ajunga la tinta? Sau exista cazuri in care nu se poate ( adica toti vecinii sa fie pomi )? :shock: Titlul: Răspuns: 477 Alee Scris de: Simoiu Robert din Februarie 16, 2011, 19:15:20 Eu la prima sursa am avut MLE pe testele 6 si 8. Vezi daca limitele sunt puse bine, daca ai ceva gen short si trebuie int .... Sunt teste mari.
Titlul: Răspuns: 477 Alee Scris de: Oancea Catalin din Februarie 16, 2011, 20:21:04 nu ... le-am avut long long :oops: si luam MLE iar acum le am int si imi da WA... dar mai mult ma deranjeaza ca o sursa cu "forta bruta" cu o complexitate de O(n^4) . ia 90 de puncte... si la mine coada e de 70000( oricum cred ca daca as incerca sa accesez coada la elementul 70001 ar da killed by signal ... in nici un caz WA
Titlul: Răspuns: 477 Alee Scris de: Simoiu Robert din Februarie 16, 2011, 20:27:34 Pentru ca long long e mai costisitor, luai TLE si acum int poate nu e suficient. Incearca sa iei testele ( daca ai de unde ) si sa vezi daca merge cu long long , sau cu int.
Titlul: Răspuns: 477 Alee Scris de: Paul-Dan Baltescu din Februarie 16, 2011, 20:55:12 nu ... le-am avut long long :oops: si luam MLE iar acum le am int si imi da WA... dar mai mult ma deranjeaza ca o sursa cu "forta bruta" cu o complexitate de O(n^4) . ia 90 de puncte... si la mine coada e de 70000( oricum cred ca daca as incerca sa accesez coada la elementul 70001 ar da killed by signal ... in nici un caz WA M-am uitat pe sursa ta si am vazut o greseala. Atunci cand verifici sa nu depasesti limitele matricii, verifici de ambele dati relativ la n si niciodata relativ la m. In plus, am observat ca tu in sursa ai 4 if-uri, cate unul corespunzator fiecarei directii. Acest lucru se poate simplifica (din punct de vedere al implementarii) folosind un for, astfel: Cod: int dirx[4] = {-1, 0, 1, 0};Titlul: Răspuns: 477 Alee Scris de: Oancea Catalin din Februarie 16, 2011, 21:09:26 pai verific la N pentru ca matricea are dimensiuni NxN si in sursa nu am decat un for :-k (defapt 2 .. cu cel de la citirea obstacolelor)
sigur te-ai uitat pe sursa mea? Titlul: Răspuns: 477 Alee Scris de: Paul-Dan Baltescu din Februarie 16, 2011, 22:43:59 Da, dar nu citisem atent problema. :P M-am uitat din nou si gresesti la ultima conditie, la care iesi din matrice (intri pe linia 0). Daca folosesti metoda de care iti povesteam, ai sanse mult mai mici sa gresesti la astfel de conditii.
Titlul: Răspuns: 477 Alee Scris de: Oancea Catalin din Februarie 17, 2011, 19:50:46 da ... asa e :oops: multumes :peacefingers:
Titlul: Răspuns: 477 Alee Scris de: Fl. C. din Martie 30, 2011, 14:49:05 Eu de ce iau doar 70 de puncte pe urm sursa?
Cod:
Titlul: Răspuns: 477 Alee Scris de: Popescu Marius din Martie 30, 2011, 15:18:01 Din cate am vazut tu ai TLE si MLE. Memorie prea multa nu ţi-ai alocat, deci cel mai probabil depăşeşti limita de memorie a stivei, din cauză că faci recursiv. Îţi recomand să încerci să faci lee-ul cu o coadă, pentru a evita situaţia asta.
Titlul: Răspuns: 477 Alee Scris de: Fl. C. din Martie 30, 2011, 17:55:47 Multumesc de raspuns. Voi incerca sa rezolv asa, dar nu acum.
Titlul: Răspuns: 477 Alee Scris de: UAIC.VlasCatalin din Iulie 26, 2011, 00:56:45 poate sa-mi sugereze cineva vreo optimizare pentru PD, am TLE la testul 7 si nu inteleg care ar fi problema pentru ca celelalte teste merg destul de bine ](*,)
Titlul: Răspuns: 477 Alee Scris de: George Marcus din Iulie 26, 2011, 10:19:12 Testul 7 e cel mai mare probabil pentru ca si la mine are cel mai mare timp.
Poate e de la citire. Incearca sa introduci asta: Cod: var bufin:array[1..50000] of byte; P.S.: Treci la C, Pascal sux. Titlul: Răspuns: 477 Alee Scris de: UAIC.VlasCatalin din August 12, 2011, 15:15:00 Las ca-i bun si pascalu, am abordat problema altfel si am scos cu pascalul 12ms, iar daca faceam in c sau cpp si mergea sursa pe 100 puncte cu ideea ineficienta atunci credem ca-i buna ideea, dar in timp de concurs puteam s-o dau in bara dar asa am avut un stimul pentru a ma gindi la alta metoda de rezolvare. \:D/
Titlul: Răspuns: 477 Alee Scris de: Salajan Razvan din August 13, 2011, 11:33:57 crezi tu ca te va ajuta pascal-ul; si eu pana acum 1 luna jumate foloseam pascal-ul, desi stiam c++ teoria, doar ca imi era foarte greu sa ma "las" de pascal;daca citeam o problema si vroiam sa o rezolv o faceam in pascal desi mi`am propus sa o rezolv in c++... te inteleg daca iti e greu sa te lasi de pascal...dar iti spun din propria experienta ca MERITA... daca o sa devi programator baza tuturor limbajelor va fi c++/c si tie iti va fi mai usor sa intelegi acel program fata de ceilalti care nu sunt familiarizati cu c++...c++ contine si libraria STL(pe care o inveti din mers) iti face implementarea MULT MAI USOARA!
unul din motivele pt care m`am lasat de pascal a fost din cauza listelor,la grafuri la maj. problemelor graful il retii in liste si era mult de implementat si "urata" sursa...asa ca am trecut pe c++...deci la inceput in c++ faceam greseli de implementare(si acum mai fac) gen la cititre uitam "&" si imi pierdeam 10 minute(sau mai mult ) pana sa observ ca acolo era greseala... oricum sfatul meu e sa te apuci c++! Titlul: Răspuns: 477 Alee Scris de: Simoiu Robert din August 13, 2011, 11:46:47 E bun si Pascalul pana la un moment dat, cand realizezi ca, cu C-ul poti mai mult. Incearca incet incet sa citesti si C, si orice program facut in Pascal sa reusesti sa-l transcrii in C. Apoi, incetul cu incetul sa faci programul direct in C, si sa lasi de tot Pascalul, pentru ca in viitor, daca te specializezi pe programare, o sa lucrezi cel mai probabil Java, sau C, care sunt foarte inrudite. Sfatul meu, tu oricum faci ce vrei, doar ca o sa-ti ajute mult de tot.
Titlul: Răspuns: 477 Alee Scris de: UAIC.VlasCatalin din August 13, 2011, 13:13:32 Ms pentru sfaturi, cel mai probabil ca le voi urma :)
Titlul: Răspuns: 477 Alee Scris de: Vidrean Mihai din August 20, 2011, 11:53:41 Buna am incercat sa rezolv si eu problema cu un Lee ,dar nu stiu din ce cauza imi da doar 90p...
Am incercat 2 variante una in care parcurgeam toata matricea ca sa aflu pasul de dinainte si dupaia marcam toti vecini cu pasul de dinainte +1 si asa imi pica la cel mai mare test la timp de executie,iar cand am facut cu o coada in care am retinut punctele imi pica la alt test,tot la timpu de executie ](*,) Aici e rezolvarea cu coada: Cod: #include<cstdio> Titlul: Răspuns: 477 Alee Scris de: Simoiu Robert din August 20, 2011, 12:16:55 Din cate vad eu nu ai folosit matrice de vizitati, adica sa nu mergi de 2 ori prin acelasi loc. Daca ai face o matrice gen viz[k][q] = 1 daca ai trecut prin pozitia k, q si 0 altfel. Initializezi viz[x1][y1] = 1, si faci lee-ul, iar la functia OK adaugi urmatoarea conditie : daca viz[k][q] = true atunci returneaza fals, si automat cand bagi in coada noul element, vad la tine xnou, ynou, faci asa : viz[xnou][ynou] = 1. Ar trebui sa iei 100 fara mari probleme.
Titlul: Răspuns: 477 Alee Scris de: cont cu nume gresit sau fals din August 20, 2011, 12:44:33 @robert: daca te uiti mai bine, o sa vezi ca mihai foloseste mat ca matrice de vizitati
@mihai: fa asa functia lee ca e ceva mai rapid si mai simplu :) Cod: void Lee(){Titlul: Răspuns: 477 Alee Scris de: Simoiu Robert din August 20, 2011, 14:28:08 DA am vazut, dar apare problema (nu stiu daca la el) cand elementul mat poate fi 0, si de fapt el a fost vizitat. In fine oricum, reuseste el :).
Titlul: Răspuns: 477 Alee Scris de: cont cu nume gresit sau fals din August 20, 2011, 14:34:45 mat[x1][y1] este initializat cu 1, eu nu vad unde poate aparea 0
Titlul: Răspuns: 477 Alee Scris de: George Marcus din August 20, 2011, 15:12:02 Problema este ca desi tu verifici toate elementele din coada de la p la u, incrementezi p doar cu 1.
Schimba for(p=1,u=1;p<=u;p++) cu for(p=1,u=1;p<=u;p=m+1) si ( ce au scris si cei de mai sus - Copyright Daniel Anghel © ) Dupa ce faci astea, o sa iti intre in timp dar o sa ai MLE. Dar iti intra in memorie daca declari c[Nmax*Nmax][2] si retii cele doua coordonate ca si c[ ][0] si c[ ][1]. Titlul: Răspuns: 477 Alee Scris de: cont cu nume gresit sau fals din August 20, 2011, 15:25:39 de fapt ar trebui sa-i intre in memorie si asa:
Cod: ((176*176*4+20)*32)/(1024*8)=484<640 Titlul: Răspuns: 477 Alee Scris de: George Marcus din August 20, 2011, 15:32:15 Teoretic, da. Nu stiu exact cum functioneaza evaluatorul, insa cred ca mai are nevoie de memorie pentru alte lucruri.
Titlul: Răspuns: 477 Alee Scris de: cont cu nume gresit sau fals din August 20, 2011, 15:53:37 da, corect
ia mle :-' Titlul: Răspuns: 477 Alee Scris de: Vidrean Mihai din August 21, 2011, 09:16:33 Mda, merge cum a zis Daniel doar ca a trebuit sa le declar toate short ca sa treaca si la memorie :D
Titlul: Răspuns: 477 Alee Scris de: Mihai Visuian din Decembrie 28, 2011, 13:35:41 stie cineva unde gresesc? iau 40 puncte:
Cod: int lee ( int n, int a[176][176], int x2, int y2 ) Titlul: Răspuns: 477 Alee Scris de: Sorin Rita din Decembrie 28, 2011, 14:06:02 Pentru lee ai nevoie de o coada in care sa bagi nodurile accesibile la un moment dat. Nu prea cred ca merge cum vrei tu sa faci. Ce faci cu acel k ? Vezi ca nu mereu pleci din punctul de coordonate (1,1)
Titlul: Răspuns: 477 Alee Scris de: Mihai Visuian din Decembrie 28, 2011, 14:48:07 Citat Pentru lee ai nevoie de o coada in care sa bagi nodurile accesibile la un moment dat. Nu prea cred ca merge cum vrei tu sa faci. Ce faci cu acel k ? Vezi ca nu mereu pleci din punctul de coordonate (1,1) k e numarul de pasi la un moment dat si il incrementez dupa fiecare parcurgere.Later Edit: AM luat suta :D... Din greseala am declarat vectorii cu coordonatele pomilor prea mici: numai de o suta Titlul: Răspuns: 477 Alee Scris de: Elena Obreja din Ianuarie 11, 2013, 11:48:42 Problema mi-a iesit de 90 de puncte...imi da un Memory Limit exceended la testul 8...aveti idee de ce??
PS: am rezolvat prin lee clasic Titlul: Răspuns: 477 Alee Scris de: Cosmin Rusu din Februarie 11, 2013, 16:48:25 Sursa mea ia 60 de puncte . MLE pe testul 8 si pe restul pe care nu le-a trecut Incorect. :readthis:
Nu inteleg, am tratat cazul particular cand raspunsul e 0 si tot aceeasi treaba. Multumesc anticipat :peacefingers:. Cod: #include <fstream> Titlul: Răspuns: 477 Alee Scris de: Mercea Otniel din Februarie 14, 2014, 19:48:31 dc nu raspunde evaluatorul?
Titlul: Răspuns: 477 Alee Scris de: Rares Cheseli din Februarie 14, 2014, 19:51:35 dc nu raspunde evaluatorul? S-a suparat :( Titlul: Răspuns: 477 Alee Scris de: Mercea Otniel din Februarie 14, 2014, 20:20:44 serios acuma ca nu mai pot trimite nici la alte probleme soluti pana nu mi-o ia pe aceasta
Titlul: Răspuns: 477 Alee Scris de: Pop Tiberiu din Februarie 14, 2014, 20:49:21 serios acuma ca nu mai pot trimite nici la alte probleme soluti pana nu mi-o ia pe aceasta Avand in vedere ca evaluatorul nu mai functioneaza de la ora 12 (cred ca ai observat asta), tot ce poti face e sa astepti sa revina si apoi iti poti trimite si sursele. PS: solutii* Titlul: Răspuns: 477 Alee Scris de: Mercea Otniel din Februarie 15, 2014, 13:30:03 de ce i-au memory limit exced pe testele 6,7,8 cu solutia
#include<iostream> #include<stdio.h> FILE *f,*g; using namespace std; const int x2[4]={0,0,1,-1}; const int y2[4]={1,-1,0,0}; long long a[178][178],x1,y1,n,m,x0,y0,i,j,u,t,inceput=1,sfarsit=1; struct punct { int ls,ld,d; }; punct coada[31684],x,y; int main() { f=fopen("alee.in","r"); g=fopen("alee.out","w"); fscanf(f,"%lld%lld",&n,&m); for(i=1;i<=m;i++) { fscanf(f,"%lld%lld",&u,&t); a[t]=-1; } fscanf(f,"%lld%lld%lld%lld",&x0,&y0,&x1,&y1); for(i=0;i<=n+1;i++) { a[0]=a[n+1]=-1; a
coada[inceput].ls=x0; coada[inceput].ld=y0; coada[inceput].d=1; a[x0][y0]=1; while(inceput<=sfarsit) { x=coada[inceput]; inceput++; for(int k=0;k<4;k++) { if(a[x.ls+x2[k]][x.ld+y2[k]]==0) { a[x.ls+x2[k]][x.ld+y2[k]]=x.d+1; y.d=x.d+1; y.ls=x.ls+x2[k]; y.ld=x.ld+y2[k]; sfarsit++; coada[sfarsit]=y; if(y.ls==x1&&y.ld==y1) { fprintf(g,"%lld",a[y.ls][y.ld]); break; } } } } } ?????? Titlul: Răspuns: 477 Alee Scris de: Rares Cheseli din Februarie 15, 2014, 13:40:19 de ce i-au memory limit exced pe testele 6,7,8 cu solutia #include<iostream> #include<stdio.h> FILE *f,*g; using namespace std; const int x2[4]={0,0,1,-1}; const int y2[4]={1,-1,0,0}; long long a[178][178],x1,y1,n,m,x0,y0,i,j,u,t,inceput=1,sfarsit=1; struct punct { int ls,ld,d; }; punct coada[31684],x,y; int main() { f=fopen("alee.in","r"); g=fopen("alee.out","w"); fscanf(f,"%lld%lld",&n,&m); for(i=1;i<=m;i++) { fscanf(f,"%lld%lld",&u,&t); a[t]=-1; } fscanf(f,"%lld%lld%lld%lld",&x0,&y0,&x1,&y1); for(i=0;i<=n+1;i++) { a[0]=a[n+1]=-1; a
coada[inceput].ls=x0; coada[inceput].ld=y0; coada[inceput].d=1; a[x0][y0]=1; while(inceput<=sfarsit) { x=coada[inceput]; inceput++; for(int k=0;k<4;k++) { if(a[x.ls+x2[k]][x.ld+y2[k]]==0) { a[x.ls+x2[k]][x.ld+y2[k]]=x.d+1; y.d=x.d+1; y.ls=x.ls+x2[k]; y.ld=x.ld+y2[k]; sfarsit++; coada[sfarsit]=y; if(y.ls==x1&&y.ld==y1) { fprintf(g,"%lld",a[y.ls][y.ld]); break; } } } } } ?????? pentru ca folosesti long long Titlul: Răspuns: 477 Alee Scris de: Mercea Otniel din Februarie 15, 2014, 13:49:00 si cu int i-au tot memory limit exced
Titlul: Răspuns: 477 Alee Scris de: Rares Cheseli din Februarie 15, 2014, 15:18:11 si cu int i-au tot memory limit exced in primul rand nu trebuie sa bordezi matricea. apoi ai de ales intre 2 optimizari: 1) pui short peste tot 2) schimbi citirea/scrierea. adica faci asa: Cod: freopen("alee.in","r", stdin);Titlul: Răspuns: 477 Alee Scris de: Mercea Otniel din Februarie 15, 2014, 16:46:55 multumesc frumos
Titlul: Răspuns: 477 Alee Scris de: Matraguna Mihai-Alexandru din Februarie 26, 2014, 10:27:06 Imi poate spune cineva de ce primesc "Memory limit exceeded" pentru testele 6 si 8 ?
#Edit: Am fost smecher, si in struct am folosit unsigned char si dupa am convertit l = int(..); c = int(..); :banana: Titlul: Răspuns: 477 Alee Scris de: Roman Tudor din Ianuarie 07, 2016, 11:48:21 Am utilizat metoda cu funcția queue din STL, dar îmi dă doar 60 de puncte la problemă. Am verificat fiecare test oficial de la OJI și îmi dă corect pe toate testele. Care ar putea fi problema?
Titlul: Răspuns: 477 Alee Scris de: Valeriu Motroi din Ianuarie 07, 2016, 13:29:24 matricea declarată de tine este prea mică.
100x100 cînd N<=175 Titlul: Răspuns: 477 Alee Scris de: Roman Tudor din Ianuarie 07, 2016, 16:19:45 Până la urmă mi-am dat seama că nu luasem în calcul acea restricție, dar mulțumesc frumos oricum!
Titlul: Răspuns: 477 Alee Scris de: Andrei Mihailescu din Aprilie 12, 2016, 12:24:28 Salut ! Imi poate spune cineva de ce iau Memory limit exceeded la testele 7 si 8 ?
Cod: #include <fstream> Titlul: Răspuns: 477 Alee Scris de: Radu C din Aprilie 12, 2016, 12:54:51 Incearca cu short in loc de int, restul pare ok
Titlul: Răspuns: 477 Alee Scris de: Alexandru Mercan din Februarie 06, 2018, 18:16:43 error : stray \377
:readthis: Cod: #include<fstream> |