Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 023 Numere Prime : Aprilie 05, 2009, 22:06:36
Este o diferenta intre MinGW si g++ la afisarea numerelor long long. Pe g++ se foloseste %lld; pe MinGW, I64d. Cum pe infoarena se compileaza cu g++, iata de ce iei bine aici si gresit la tine cand afisezi cu lld.

Fstream se descurca la fel si pe MinGW si pe g++ si de-aia e ok in ambele parti.

multumesc pentru clarificare Very Happy asta inseamna ca e cazul sa-mi schimb compilatorul cu unul mai asemanator cu g++?
2  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 023 Numere Prime : Aprilie 05, 2009, 22:02:41
fout>>var

 Rolling on the Floor Laughing Rolling on the Floor Laughing semnele nu se pun invers (<<) din cate stiu eu? Tongue e clar cat iti e de usor...
3  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 023 Numere Prime : Aprilie 05, 2009, 21:50:04
 Huh am luat suta cu fstream. as fi recunoscator daca mi-ar explica cineva de ce.
nu folosesc borland, folosesc mingw studio. din cate am inteles ar trebui sa se comporte la fel cu compilatorul de pe infoarena.

[Edit]
foarte foarte aiurea... cu "%I64d" ala iau doar 50..

[Later edit]
eu nu mai inteleg absolut nimic.. deci cu fstream e ok si la mine si pe site, dar mi-e mie incomod. cu stdio imi da mie bine daca folosesc "%I64d", dar da gresit pe site. daca folosesc "%lld", imi da gresit pe compilatorul meu, dar corect in evaluator. e aiurea rau de tot Fool
4  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 023 Numere Prime : Aprilie 05, 2009, 21:42:22
ajutati-ma si pe mine, va rog frumos. am o problema foarte dubioasa. am facut problema, merge corect si pe testul cu 100.000, dar imi afiseaza gresit Fool
stiu sigur ca algoritmul e bun, pentru ca in debug imi apare valoarea corecta, dar in fisierul de iesire e o aberatie. mai precis, am codul urmator:

Cod:
#include <stdio.h>
#define N 1318700

bool prim[N];
long long x;
int count,k;

int main()
{
freopen("prim.in","r",stdin);
freopen("prim.out","w",stdout);

scanf("%d",&k);
[...]
for(...)
if(...)
{ x=i*i;
printf("%lld",x);
break;
}
}
fclose(stdin); fclose(stdout);
return 0;
}

exact asta fac. e foarte dubios, pentru ca daca dau 100000, in debug imi arata x ca fiind 1.689.274.677.841, iar in fisierul de iesire, in urma instructiunii printf("%lld",x) imi afiseaza 1.352.530.513. ce gresesc? Huh Huh
5  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 688 Patrat : Martie 16, 2009, 14:11:01
 Huh Huh sursa mea foloseste 3 int-uri si 2 bool-uri ca variabile. De unde am 200 de kile de memorie folosita?  Huh
6  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 683 Piata : Martie 16, 2009, 12:54:57
ma poate ajuta cineva?  Confused iau WA pe testul 9, chiar nu inteleg de ce, si mi-e un pic cam greu sa fac debug pe un test de 40 000   Think

fac cam asa:
Cod:
	scanf("%d%d%d%d%d",&n,&y1,&x1,&y2,&x2);
for(int i=1;i<=n;i++)
v[i]=f(i);
while(y1>1)  //duc dreptunghiul cu suma pe prima linie
{ x1--; x2--;
y1--; y2--;
}
for(int i=x1;i<=x2;i++)
s+=elem(i);
suma=s;
for(int i=1;i<y2;i++)
{ s-=elem(x2);
s+=elem(x1-1);
suma+=s;
x1--; x2--;
}

printf("%ld",suma);

unde elem(i) e o functie care returneaza v[ i ] daca i e in limita vectorului (1->n) sau corespondentul lui i in vector, daca e in afara limitelor
Cod:
inline int elem(int x)
{ int t;
if(x>0&&x<=n) //e clasic
return v[x];
else
{ if(x<=0)
{ while(x<=0)
{ t=1-x;
x=n-t+1;
}
return v[x];
}
else
{ while(x>n)
{ t=x-n;
x=t;
}
return v[x];
}
}
}
7  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 404 Lacuri : Martie 16, 2009, 10:52:14
ce inseamna "nu trebuie drum"? Huh
8  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 477 Alee : 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? Very Happy...

ceva de genul:

Cod:
0 0 -1 0 0
0 -1 0 -1 0
0 0 -1 0 0
0 0 0 0 0
0 0 0 0 0

daca fisierul .in ar arata cam asa
Cod:
5 4
1 3
2 2
2 4
3 3
2 3 5 5
cat ar fi raspunsul pt exemplul asta?
9  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 444 Politic : Martie 02, 2009, 01:47:43
Am incercat sa re-rezolv problema asta folosind cautarea binara. Brusc nu mai inteleg problema nici cu rezolvarile anterioare. Sunt total confuz d'oh!
Imi explica si mie cineva exemplul? De unde sunt doar 4 coalitii posibile?! Programul meu afiseaza 7, ceea ce mi se pare si foarte logic.

Partidul 1 se poate asocia cu 2, cu 3, cu 4 si cu 5.
Partidul 2 se asociaza cu 4 si 5.
Partidul 3 cu 5.
Partidul 4 nu se asociaza cu nimeni..
In total 4+2+1=7...

Am folosit cautarea binara ca sa aflu nr minim de partide dintr-o coalitie.
10  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 168 Numarare triunghiuri : Martie 01, 2009, 22:04:40
Ce optimizare?

in al 3lea for, nu parcurgi vectorul pana la capat, ci pana gasesti prima valoare care nu mai respecta conditia v[ i ]+v[ j ]<=v[ k ]. pentru ca ai sortat dinainte vectorul, conditia va fi falsa si pentru toate valorile de dupa acest k. in practica folosesti un mic break.

sper ca am fost clar Very Happy

[L.E.] Cred ca ar putea fi modificate testele astfel incat sa descurajeze folosirea smecheriei asteia Smile adica conditia de care ziceam sa devina falsa spre sfarsitul vectorului, astfel incat sa nu mai conteze foarte mult la timp break-ul ala.
11  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 168 Numarare triunghiuri : Martie 01, 2009, 00:58:43
cu o mica optimizare se pot scoate 100p si cu O(n^3). dar cautarea binara intra muuuult mai lejer in timp Very Happy
12  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 444 Politic : Aprilie 29, 2008, 15:31:04
Nu e un pic (dar doar un pic) cam mare limita de timp? adica o sursa optimizata nu se apropie nici pe departe de 0.5 sec (atata ia executia pt un brute-force)  Very Happy
13  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 685 Pluricex : Aprilie 02, 2008, 18:13:17
eu cred ca e optim...
14  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 685 Pluricex : Aprilie 02, 2008, 17:16:00
Eu am asemenea functie de verificare

Cod:

//vectorul elev[23] reprezinta stiva, apar[23] reprezinta aparitiile disciplinelor in cadrul unei combinari
//matricea stie[23][10] ia valoarea 1 daca elevul i stie disciplina j si 0 altfel

inline int bun()
{   int i,j;

    for(i=0;i<k;i++)
        for(j=1;j<=d;j++)
            if(stie[elev[i]][j]) apar[j]++;
    for(i=1;i<=d;i++)
{   if(!apar[i])
{ for(j=i;j<=d;j++) apar[j]=0; //reinitializez pentru combinarea urmatoare
return 0;
}
apar[i]=0;
}
    return 1;
}

void back(int x)
{
     if(k==x)
     {   if(bun())
     {   for(int i=0;i<k;i++) printf("%d ",elev[i]);
         printf("\n");
     }
     }
     else
         for(int i=elev[x-1]+1;i<=n;i++)
         {   elev[x]=i;
             back(x+1);
         }
}

totusi nu obtin decat 80 de puncte... ce anume sa optimizez? Eh?
15  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 017 Combinari : Martie 15, 2008, 22:23:45
Am vazut ca in sursa ta tot faci verificarea asta:
Cod:
for(int j=1;j<i;j++)  
                    if (x[j+1]<=x[j]) return 0; 
return 1; 
Gandeste-te ca poti sa generezi permutarile direct, corect, fara verificare.
Exemplu daca ai deja generat : 1 3 5 atunci urmatorul element il vei alege ca fiind mai mare decat 5, nu le mai incerci si pe alea mai mici sau egale decat 5 pentru ca sigur nu vor fi bune.
Analizeaza si alte surse, ca sa vezi diferite implementari.

daca stiam chestia asta inainte de oji luam 130 de puncte si poate aveam si eu sanse... oricum buna sugestie Thumb up
16  infoarena - concursuri, probleme, evaluator, articole / Concursuri / Răspuns: Olimpiada Judeteana de Informatica 2008 - liceu : Martie 15, 2008, 19:01:59
au aparut listele oficiale?? Eh?
17  infoarena - concursuri, probleme, evaluator, articole / Concursuri / Răspuns: Olimpiada Judeteana de Informatica 2008 - liceu : Martie 15, 2008, 17:36:00
eu sunt la cls a 9a si am luat doar 80 de puncte sad nu mi-a intrat in timp backul la problema pluricex... iar listele la problema 1 nu mi-au mers Eh?

Later Edit: La multi ani Wefgef wink
18  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 012 Ridicare la putere in timp logaritmic : Martie 13, 2008, 21:38:47
Din cate stiu eu, functia pow() nu are complexitate O(logB), ci O(B). Gresesc cumva?  Huh

daca
functia pow() din <math> nu este eficienta
, inseamna ca ai dreptate
19  infoarena - concursuri, probleme, evaluator, articole / Concursuri / Răspuns: Olimpiada Judeteana de Informatica 2008 - liceu : Martie 12, 2008, 12:41:01
Se ia toata programa din cls a9a... chiar daca nu ati facut. Deci..tre sa stii toata materia care se va preda pana pe 15 iunie.

mai precis... ce inseamna "toata materia"?
20  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 010 Ciurul lui Eratosthenes : Martie 12, 2008, 11:03:40
La aceasta problema s-a modificat enuntul si s-au schimbat testele. In consecinta a fost facuta o reevaluare. Ne cerem scuze pentru eventualele neplaceri.

acum m-am prins si eu... nu pricepeam de ce am 0p Rolling on the Floor Laughing
21  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 008 Cifra : Martie 09, 2008, 23:53:31
ma dau batut... Fool cum fac sa pastrez numerele n intr-un sir de caractere??  Eh?
22  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 002 Jocul Flip : Martie 05, 2008, 03:59:44
am... facut problema Eh? chiar daca e ora 4 noaptea/dimineata si lumea sforaie pe la mine prin casa, am avut mult de invatat la backtracking din problema asta... multumesc pentru sugestiile din posturile anterioare Ok
23  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 159 Dame : Martie 04, 2008, 22:24:35
se poate face backtracking pentru n mai mare ca 20? Eh?
24  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 011 Generare de permutari : Martie 02, 2008, 14:57:22
Fa scrierea si citirea in C, si scrie functia afis()  inline.

multumesc pentru sfat, am modificat si am luat si eu suta Thumb up dar oricum, de ce stdio merge mai repede decat fstream??  Eh?
25  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 011 Generare de permutari : Martie 02, 2008, 12:28:59
Am postat solutia folosind si backtracking, si generarea permutarii urmatoare, dar totusi imi iese din timp la ultimul test. de ce? Fool
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines