Afişează mesaje
|
Pagini: 1 ... 10 11 [12]
|
277
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Raspuns: invalid memory reference
|
: Octombrie 06, 2006, 16:26:58
|
#include <stdio.h> #include <memory.h>
long ionel;
long detcost( long vi, long vg ) { ionel -= vi;
if( vg > ionel ) vg = ionel;
ionel -= vg;
if( ionel < 0 ) ionel = 0;
return vg; }
int main() { long increment, n, vi[1002], vg[1002], t, for1, for2, for3, for4, for5; long cost = 0;
freopen( "cai.in", "r", stdin ); freopen( "cai.out", "w", stdout );
scanf( "%ld\n", &t );
for( for1 = 0; for1 < t; ++for1 ) {
memset( vi, 0, sizeof(vi) ); memset( vg, 0, sizeof(vg) ); cost = 0; ionel = 0;
scanf( "%ld\n", &n );
for( for2 = 0; for2 < n; ++for2 ) { scanf( "%ld ", &increment ); ++vg[increment]; }
scanf( "\n" );
for( for3 = 0; for3 < n; ++for3 ) { scanf( "%ld ", &increment ); ++vi[increment]; }
scanf( "\n" );
for( for4 = 0; for4 <= 1000; ++for4 ) { if( vi[for4] ) ionel += vi[for4]; if( vg[for4] ) { if( vg[for4] == ionel && vi[for4] == ionel && ionel != 0 ) { cost += 0;
}
else if( ionel == 0 || ionel < 0 ) { ionel = 0; cost -= 200*vg[for4]; } else if( vi[for4] == 0 && ionel ) { if( ionel > vg[for4] ) { cost += 200*vg[for4]; ionel -= vg[for4]; } else { cost += 200*ionel; ionel = 0; } }
else { cost += 200*detcost( vi[for4], vg[for4] ); } } } printf( "%ld\n", cost );
}
fclose( stdin ); fclose( stdout );
return 0; }
poate doar operatii pe numere mari.... ce as putea sa zic altceva.....
|
|
|
281
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Raspuns: invalid memory reference
|
: Octombrie 06, 2006, 15:56:36
|
merci de raspuns trebuia sa citesc chestia aia oricum, faza e ca n-am reusit sa indrept. chestia cu limita de stiva si heap pica pentru ca am folosit doar 2 vectorii de 1002 de elemente si o functie vai de capul ei, fara nimic repetitiv.... for-urile merg pana la 1000... am folosit si niste define-uri, dar le-am scos acum, dar nu era din cauza lor... nu-mi dai, te rog mult, niste exemple mai clare in care ar putea sa apara? sunt cam (batut in cap)...
|
|
|
285
|
Comunitate - feedback, proiecte si distractie / Off topic / Raspuns: o problema tare..
|
: Septembrie 13, 2006, 12:57:34
|
Scuze am fost plecat si n-am mai raspuns Pai, sa dau eu solutia totusi...... mi-au dat cativa msg, dar nu e exact ce vroiam eu notam sticlele de la 0 la 999 si transformam nr in baza 2, cu 10 cifre( 18 -> 0000010010 ) asezam in ordine condamnatii, si cifrele fiecarei sticle le punem sub condamnati astfel incat cifra x sa-i corespunda condamnatului x..ex: pentru sticla 18 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 1 0 0 1 0 si le dam sa bea doar celor ce au sub ei 1. daca 18 este sticla otravita vor muri 9 si 6 si formam alt numar punand la cifra x valoarea 1.... si va iesi 18 in baza 2, iar transformandu-l in 10 vom obtine numarul dorit bineinteles, asa se va proceda cu oricare dintre sticle..... parca pe la 1000 numai un condamnat mai scapa.... life's cruel devilkind, si chestia cu multimile este tot in genul.... dar asta e mai eleganta
|
|
|
293
|
Comunitate - feedback, proiecte si distractie / Off topic / o problema tare..
|
: Septembrie 11, 2006, 13:38:56
|
Din cate am auzit a fost data la un examen la oracle... Nu am mai multe detalii.... Here it goes: Un imparat avea 1000 de sticle de vin. Un om rau i-a otravit una dintre sticle. Imparatul a apelat la un intelept pentru a rezolva prb dandu-i termen o luna. I-a pus la dispozitie 10 condamnati la moarte si stiind ca o picatura beuta din sticla otravita omoara un condamnat intr-o luna, inteleptul trebuie sa afle care este sticla otravita. Daca isi da seama care sa-mi dea un msg si scriu pe forum daca este solutia corecta..... Sa se gandeasca mai multi. Hint: este genul de prb cu care un informatician este obisnuit! Neclaritati?
|
|
|
|