Pomoc se soutezni ulohou - na PC normalne, ale na webovem rozhrani stack overflow – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Pomoc se soutezni ulohou - na PC normalne, ale na webovem rozhrani stack overflow – Pascal – Fórum – Programujte.comPomoc se soutezni ulohou - na PC normalne, ale na webovem rozhrani stack overflow – Pascal – Fórum – Programujte.com

 

14. 11. 2009   #1
-
0
-

Dobrý den
mam takový problém se soutěžní úlohou do programovací olympiády, které se účastím.
Program doma na PC funguje dobře, ale na Webovém rozhraní mi vypisuje u všech 10-ti testovací dat Runtime error 202: Stack overflow - myslím že to je to, že mi přeteče (asi maximállní povolená) paměť

Záznam o vyhodnocení


Jailing user 'mopcodex' (UID 2024, GID 1006) into directory '/home/mopcodex/workers/eval1/jail'
Initializing... OK
Preparing sandbox... running locally (INSECURE), OK
Finding source... ./inbox/source.fp
Compiling... OK
Test 01... <init> <run> RE:Runtime error 202: Stack overflow
Test 02... <init> <run> RE:Runtime error 202: Stack overflow
Test 03... <init> <run> RE:Runtime error 202: Stack overflow
Test 04... <init> <run> RE:Runtime error 202: Stack overflow
Test 05... <init> <run> RE:Runtime error 202: Stack overflow
Test 06... <init> <run> RE:Runtime error 202: Stack overflow
Test 07... <init> <run> RE:Runtime error 202: Stack overflow
Test 08... <init> <run> RE:Runtime error 202: Stack overflow
Test 09... <init> <run> RE:Runtime error 202: Stack overflow
Test 10... <init> <run> RE:Runtime error 202: Stack overflow


jedná se o první úlohu z http://mo.mff.cuni.cz/p/59/zadani-1.html - Malíř Bonifác

proste Bonifác barví chodník a je potřeba naprogramovat výsledný stav. Nejjednodušší je to přes klasické statické pole a přepisovat buňky, ale dojde brzo paměť, ja to dělal přes pointery, které si pamatovali vždy celý interval odkud kam to má nakreslit tou konkrétní barvou, celá struktura je dynamická, tak aby zabírala jen to místo co potřebuje...

Bohužel nikde neni udáváno kolik paměti maximalne muze ta uloha mit, tak nevim o jak moc mi to a hlavne kde překračuje...

Kdyby se tu našel nějaký dobrák, co se prohrabal (přiloženým) kódem a řekl mi co a jak napravit, byl bych mu moc vděčný.

Někde to je ale i nepřehledné, protože postupným vývojem jsou tam 2 procedury, ale pismenka (proměnne) v nich znamenaji neco jineho :(

Diky moc

P.S. - odevzdavani je zitra do pulnoci :D

Nahlásit jako SPAM
IP: 85.207.120.–
šnek
~ Anonymní uživatel
21 příspěvků
15. 11. 2009   #2
-
0
-

Myslim že by mohlo stačit odstranit lokální proměnnou barvy z Procedury Vypis
a dát ji jako globální, pak se nealokuje na zásobníku ale normálně v datovym segmentu. S ní mi to taky padalo, po změně to jede,
ale !
nevim nevypadá to že bys ten program měl zrovna funkční, zkus takové mé zadání dole a podle
mě ti to vypíše nesmysli, já bych k tomu přistoupil nějakym pyramidovym řešenim, kde
bych pro každý příkaz od prvního odebíral jednotlivé příkazy postupně co následují a nezapomněl osekávat vnitřky, nedělal to najednou pro všechny jako ty, jestli chápeš :-)

bonifac.in
4 5 8
1 8 1
2 3 3
5 6 4
2 3 2

Nahlásit jako SPAM
IP: 85.71.152.–
15. 11. 2009   #3
-
0
-

Díky moc za ty barvy ve vypise, ted to funfuje :-)

Jailing user 'mopcodex' (UID 2024, GID 1006) into directory '/home/mopcodex/workers/eval1/jail'

Initializing... OK
Preparing sandbox... running locally (INSECURE), OK
Finding source... ./inbox/source.fp
Compiling... OK
Test 01... <init> <run> RE:Runtime error 201: Range check error
Test 02... <init> <run> <check> OK:OK (100 points)
Test 03... <init> <run> <check> WA:Wrong answer
Test 04... <init> <run> <check> OK:OK (100 points)
Test 05... <init> <run> <check> OK:OK (100 points)
Test 06... <init> <run> <check> WA:Wrong answer
Test 07... <init> <run> <check> OK:OK (100 points)
Test 08... <init> <run> <check> WA:Wrong answer
Test 09... <init> <run> <check> OK:OK (100 points)
Test 10... <init> <run> <check> WA:Wrong answer


a mas pravdu, jsou nejaky chyby, i ten tvuj priklad nefungoval spravne :(
je to dost o náhodě :D podle toho jaký chytnu testovací data :D


co myslis, je lepsi snazit se opravit ty chyby, nebo to udelat nejak znovu?

já bych k tomu přistoupil nějakym pyramidovym řešenim, kde
bych pro každý příkaz od prvního odebíral jednotlivé příkazy postupně co následují a nezapomněl osekávat vnitřky, nedělal to najednou pro všechny jako ty, jestli chápeš :-)


no popravde moc nevim jak .... nekde jsem slysel ze se to da delat nejakym intervalovym stromem - je to to co myslis?

nebo pockat, ty myslis jako udelat jeden velikanskej pointer pres vsechen rozsah a pak do nej vysekavat ty dalsi prikazy? - ale pripada mi to velmi podobny s tim mym resenim, taky musim overovat jak se to prekrejva atd :(

Nahlásit jako SPAM
IP: 85.207.120.–
šnek
~ Anonymní uživatel
21 příspěvků
15. 11. 2009   #4
-
0
-

to mas jeste ve vystupech celkem dobrej pomer, asi tam nemaj moc slozity vstupy.
a asi bych to psal znova a doufal ze to stihnu :D, jo binarni strom s intervalama bych si na to umel predstavit, ja nejvic kdy potreboval do algoritmu ovsem cistej binarni strom, na intervaly jsem ho delit nemusel, takze chybi hlubsi zkusenost :D

Nahlásit jako SPAM
IP: 85.71.152.–
15. 11. 2009   #5
-
0
-

mno jelikoz chci zkusit jeste udelat (nebo se o ne aspon pokusi) ulohy 3 a 4, tak to znova dleat asi nebudu, protoze o programovani nam teprve minulou hodinu naznacil co to strom je, jeste ani nevim jak to programovat, takze bych to nestih :D
jeste udelam optimalizaci na ty tvoje data a uvidim jak se to zlepsi :D

no a taky jeste musim vylepsi ulohu cislo 2 (čokoláda) - precejen slozitost n^5 nebo N^6 neni ono, sice 4 body za to jsou....ale...
musim nejak optimalizovat to rpochazeni polem

Nahlásit jako SPAM
IP: 85.207.120.–
15. 11. 2009   #6
-
0
-

ted jsem nasel jednu chybu, napravilo to vysledek tech tvych dat na

5

1
0
1
0


v procedure procB v casti okomentovane "//b je mensi nez P^.b"
jsem pridal
N^.a:=prikazy[i].b;

zapomel jsem tu predchozi bunku oriznout

novy vysledek: 8 bodů :-)..to uzfakt nema cenu prepisovat
Test 01... <init> <run> RE:Runtime error 201: Range check error

Test 02... <init> <run> <check> OK:OK (100 points)
Test 03... <init> <run> <check> WA:Wrong answer
Test 04... <init> <run> <check> OK:OK (100 points)
Test 05... <init> <run> <check> OK:OK (100 points)
Test 06... <init> <run> <check> OK:OK (100 points)
Test 07... <init> <run> <check> OK:OK (100 points)
Test 08... <init> <run> <check> OK:OK (100 points)
Test 09... <init> <run> <check> OK:OK (100 points)
Test 10... <init> <run> <check> OK:OK (100 points)


jeste nejak podchytit ty 2 chyby a bude to za plnej pocet :-)

Nahlásit jako SPAM
IP: 85.207.120.–
15. 11. 2009   #7
-
0
-

Tak mam 10 bodů :-)
psali tam, že

Pro 8 z 10 testovacích vstupů bude navíc platit K<=1 000 000. Pro 6 z těchto 8 testovacích vstupů bude navíc N<=10 000, a pro 3 z těchto 6 vstupů bude K,N<=1 000.



no a me tam blbnuli prave ty prvni 3 (az na tu druhou)
a kdyz jsem si zkusil (drive, abych mel alespon nejaky body) udelat trivialni reseni - klasicky pres pevne pole - simulovat presne to co by mel bonifac delat - proste jsem opravdu kreslil do pole a pak precetl vysledny stav - tak mi to dalo prvni 3 data spravne....

tak jsem to zkombinoval..,,dal jsem tam podminku, ze pokud K,N<=1 000 tak to pustí to trivialni reseni, v ostatnich pripadech to slozitejsi....

<= znamena mensi nebo rovno


no a nakonec to vyslo...

Ještě jednou dik za rady ;-)

Nahlásit jako SPAM
IP: 85.207.120.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 20 hostů

Podobná vlákna

Pomoc s úlohou — založil Kárl

Pomoc s ulohou v C — založil newo

Pomoc s ulohou... — založil pra3tor

Pomoc s matematickou ulohou — založil Kadla

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý