Afişează mesaje
|
|
Pagini: [1] 2
|
|
1
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1120 Inundatie
|
: Aprilie 04, 2011, 11:46:38
|
Aveti careva vreo idee de ce imi da programul asta incorect? Stiu ca nu e complexitate optima, dar totusi, ar trebui sa ia cateva teste.  #include <cstdio> #define LIM 90005 using namespace std; FILE *f=fopen("inundatie.in", "r"), *g=fopen("inundatie.out", "w"); unsigned long long inu[LIM]; long m, n, i, j, x, k, max; inline void citeste() { fscanf(f, "%ld%ld", &n, &m); n=m*n; for (i=1;i<=n;i++) { fscanf(f, "%ld", &x); if (x) { for (j=2;j<=x;j++) inu[j]+=j-1; for (j=x+1;j<=n;j++) inu[j]+=x; } } max=inu[n]; }
inline void rezolva() { fscanf(f, "%ld", &k); for (i=1;i<=k;i++) { fscanf(f, "%ld", &x); if (x>n) fprintf(g, "%lld\n", max); else fprintf(g, "%lld\n", inu[x]); } }
int main() { citeste(); rezolva(); fclose(f); fclose(g); return 0; }
|
|
|
|
|
6
|
infoarena - concursuri, probleme, evaluator, articole / Concursuri / Răspuns: OJI Liceu 2010
|
: Martie 06, 2010, 18:24:37
|
Nu mai pot ce ofticat sunt. Problema 2 n-am stiut-o si am lasat-o dar prima a fost super simpla (la XI-XII) . Dar nu inteleg ce naiba s-a intamplat ca am luat 0 puncte  . M-am uitat la solutie si pare aproape copy-paste dupa solutia mea, difera doar numele la variabile si ceea ce probabil mi-a adus cele 0 puncte, La fel si la mine. Prima am facut-o cu back si mergea pe tot ce am dat eu, inclusiv exemplul din text. A doua cu dinamica si la fel dadea bine pe toate exemplele care mi-au trecut prin cap. Ca sa ma trezesc ca iau 0 pe prima si 10 pe a doua  Pe viitor recomand mai multe teste in exemplu, poate chiar si accesul la evaluator (nu si la teste) in timpul concursului pentru ca pleci acasa cu gandu la 100+ si te trezesti ca mine  Nici nu e logic, ca daca e sa creezi un program pentru tine, stii clar pe ce date vrei sa-ti functioneze, nu trebuie sa ghicesti cazurile particulare, care de obicei sunt date ca exemplu 
|
|
|
|
|
7
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 826 Project management
|
: Martie 05, 2010, 11:26:52
|
Am folosit Critical Path si iau 82 de puncte. Ideea e ca pe 6 teste nu imi da bine a doua valoare. Asta este partea care afla a doua valoare, daca reuseste cineva sa se prinda ce am gresit fac o bere ca pe mine deja ma termina psihic chestia asta. Sper ca nu e prea explicit, pentru ca nu poti lua puncte doar cu bucata asta.  void critical_path(void) { t=0; for (i=1;i<=n;i++) check[i]=0; for (i=1;i<=n;i++) { sw=0; for (j=1;j<=n;j++) if (m[j][i]) { sw=1; break; } if (!sw) { check2[i]=1; check[i]=1; st[++t]=i; v[i].tfmax=cost; v[i].tsmax=v[i].tfmax-v[i].c; } } for (i=1;i<=n;i++) for (j=1;j<=n;j++) if (m[st[i]][j]&&!check2[j]) { st[++t]=j; check2[j]=1; }
for (i=1;i<=n;i++) { sw=0; for (j=1;j<=n;j++) if ((m[j][st[i]]&&!check[j])||check[st[i]]) { sw=1; break; } if (!sw) { min=MARE; for (j=1;j<=n;j++) if (m[j][st[i]]&&v[j].tsmax<min) min=v[j].tsmax; v[st[i]].tfmax=min; v[st[i]].tsmax=v[st[i]].tfmax-v[st[i]].c; check[st[i]]=1; } } }
|
|
|
|
|
14
|
Comunitate - feedback, proiecte si distractie / Blog / Răspuns: Concursuri virtuale
|
: Martie 21, 2009, 22:52:52
|
O problema care am observat-o: Daca trimiti o sursa la un concurs la care nu ar trebui sa vezi punctajele, scorul o sa iti apara oricum in arhiva de probleme. Ar trebui blocat accesul la Articles si Downloads, avand in vedere ca sunt destule probleme cu solutiile in aceste sectiuni. Deasemenea, ar trebui blocat accesul la sursele trimise anterior la aceeasi problema, pentru ca se poate trimite o sursa care stii sigur ca ia 100 de puncte foarte usor. Si ca sa nu afecteze pe toata lumea in timpul concursurilor, ar trebui sa se puna inscrieri iar in timpul concursului accesul userilor inscrisi sa fie restrictionat la aceste sectiuni. Bineinteles ca sunt altii cu mai multe conturi si pot intra pe ele in timpul concursurilor, dar mai mult nu stiu daca se poate face. Eventual blocarea pe ip a contului in timpul concursului, dar de aicia va pricepeti voi mai bine ca mine 
|
|
|
|
|
19
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 482 Pluton
|
: Martie 13, 2009, 09:51:30
|
Eu inteleg ca vrei sa ma ajuti dar decat sa vorbesti aiurea mai bine ma lasi. Din moment ce a luat 100 pe evaluatorul de la OJI nu cred ca e chiar ineficienta. Si cred ca mi-am dat si eu seama ca testele nu-s grupate din plictiseala.
Nu vrei tu sa-ti revizuiesti tonul si sa lasi ironia asta inutila chiar daca esti stresat de faptul ca sambata e OJI? Personal nu cred ca e nimic vorbit aiurea in postul in care ti s-a raspuns. Daca vrei sa fii ajutat poti incepe prin a fii mai explicit: WA sau TLE? Daca e WA deja putem sa nu mai stam de vorba. Considera ineficienta programului tau demonstrata. Daca e TLE cred ca e destul de clar ca nu respecti limitele impuse aici. Problemele care au fost date la OJI n-au fost puse copy-paste pe Infoarena, ci modificate, si unele teste chiar imbunatatite din cate stiu eu. Pur si simplu sunt probabil alte limite si alte teste. Nu vad nicio problema ca obtii punctaje diferite. Concluzie: sursa ta nu e "chiar ineficienta", e doar destul de ineficienta. Editat de admin: ... Si gata cu offtopicu ca nu cred ca isi are locul aici. Deci are cineva idee ce ar putea avea sursa ?
|
|
|
|
|
20
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 482 Pluton
|
: Martie 12, 2009, 09:51:26
|
Deci din nou m-a dezamagit evaluatorul de pe infoarena ... Evaluatorul de la OJI imi da 100 de puncte, iar cel de aici, desi imi accepta 4 teste pe restu imi da 0 si per total iau 0. De ce ?!
primesti 0 puncte pentru ca testele sunt grupate astfel incat sursele ineficiente sa nu primeasca nimic sau punctajul pe masura Eu inteleg ca vrei sa ma ajuti dar decat sa vorbesti aiurea mai bine ma lasi. Din moment ce a luat 100 pe evaluatorul de la OJI nu cred ca e chiar ineficienta. Si cred ca mi-am dat si eu seama ca testele nu-s grupate din plictiseala.
|
|
|
|
|
21
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 482 Pluton
|
: Martie 11, 2009, 09:54:39
|
Deci din nou m-a dezamagit evaluatorul de pe infoarena ... Evaluatorul de la OJI imi da 100 de puncte, iar cel de aici, desi imi accepta 4 teste pe restu imi da 0 si per total iau 0. De ce ?! #include <stdio.h> #include <string.h> #include <ctype.h> #define NR 4001 FILE *f, *g; long i, n, k=0, sw, nr[NR], h, j, aux, max, sm; char v[NR][11], t[NR][11], x[13]; void citire (void) { f=fopen("pluton.in", "r"); g=fopen("pluton.out", "w"); fscanf(f, "%ld", &n); fscanf(f, "%c", &v[0][0]); for (i=1;i<=n;i++) { fgets(v[i], 12, f); sw=strlen(v[i])-1; if (!isdigit(v[i][sw])) v[i][sw]='\0'; } }
int main(void) { citire(); for (i=1;i<=n;i++) { nr[i]=0; sw=strlen(v[i])-1; for(j=0;j<=12;j++) x[j]=0; for(j=0;j<=sw;j++) x[j]=v[i][j]; for(j=0;j<sw;j++) for(h=j+1;h<=sw;h++) if(x[j]>x[h]) { aux=x[j]; x[j]=x[h]; x[h]=aux; } sw=0; for (j=1;j<=k;j++) if (strcmp(t[j], x)==0) { sw=1; nr[j]++; break; } if (!sw) { nr[++k]=1; strcpy(t[k], x); } } sw=0; long s=0; fprintf(g, "%ld", k); for (i=1;i<=k;i++) if(nr[i]>max) { s=1; max=nr[i]; strcpy(v[0], t[i]); } else if (nr[i]==max) s++; fprintf(g, "\n%ld\n%ld\n", max, s); sm=strlen(v[0])-1; for (i=0;i<sm;i++) for (j=i+1;j<=sm;j++) if (v[0][i]>v[0][j]) { aux=v[0][i]; v[0][i]=v[0][j]; v[0][j]=aux; } sm=strlen(v[0]); k=0; for (i=1;i<=n;i++) { sw=strlen(v[i])-1; if (sw+1==sm) { strcpy(x, v[i]); for (j=0;j<sw;j++) for (h=j+1;h<=sw;h++) if (x[j]>x[h]) { aux=x[j]; x[j]=x[h]; x[h]=aux; } if (!strcmp(v[0], x)) { k++; fputs (v[i], g); fprintf(g, " "); } if (k==max) break; } } fcloseall(); return 0; }
|
|
|
|
|
24
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 782 Densitate
|
: Martie 01, 2009, 22:49:01
|
Seba eu tot am incercat sa fac cum zici tu dar tot aia da. Deci am stat cu Manu C. 2 zile sa vedem ce are si pauza... Postez acum toata sursa (sper ca e ok) ca deja am facut gauri in tastatura. #include <stdio.h> FILE *f, *g; long k=0, s[45550], i, j, n, q, x, y, t; bool v[500005];
long cbin (long w, bool e) { long x1, y1, mij; x1=1; y1=k; mij=(x1+y1)/2; while (x1<=y1) { if (s[mij]<=w&&s[mij+1]>w&&e) return mij; if (s[mij]>=w&&s[mij-1]<w&&!e) return mij; if (w<s[mij]) y1=mij-1; else x1=mij+1; mij=(x1+y1)/2; } return mij; }
void ciur(void) { s[1]=2; k=1; for (i=3;i<=n;i+=2) if (!v[i]) { s[++k]=i; if (i<=707) for (j=i;i*j<=n;j++) v[i*j]=1; } }
int main(void) { f=fopen("densitate.in", "r"); g=fopen("densitate.out", "w"); fscanf(f, "%ld%ld", &n, &q); ciur();
for (i=1;i<=q;i++) { if (i==3) i=3; fscanf(f, "%ld%ld", &x, &y); if (x<=2&&y>=s[k]) { fprintf(g, "%ld\n", k); continue; } fprintf(g, "%ld\n", cbin(y, 1)-cbin(x, 0)+1); } fcloseall(); return 0; }
Culmea e ca pe sursa asta iau testu 2 dar e prea inceata  #include <stdio.h> #include <math.h> FILE *f, *g; long k=0, s[41550], i, j, n, q, x, y, t; bool v[500001];
void ciur(void) { s[1]=2; k=1; for (i=3;i<=n;i+=2) if (!v[i]) { s[++k]=i; if (i<=707) for (j=i;i*j<=n;j++) v[i*j]=1; } }
int main(void) { f=fopen("densitate.in", "r"); g=fopen("densitate.out", "w"); fscanf(f, "%ld%ld", &n, &q); ciur(); for (i=1;i<=q;i++) { fscanf(f, "%ld%ld", &x, &y); for (j=1;j<=k;j++) if (s[j]>=x) break; t=j; for (;j<=k;j++) if (s[j]>y) break; fprintf(g, "%ld\n", j-t); } fcloseall(); return 0; }
Cineva ceva idei ? 
|
|
|
|
|