Afişează mesaje
|
Pagini: [1] 2
|
3
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 005 Potrivirea sirurilor
|
: August 07, 2015, 14:16:55
|
void make_prefix(void) { int i, q = 0; for (i = 2, pi[1] = 0; i <= M; ++i) { while (q && A[q+1] != A[i]) q = pi[q]; if (A[q+1] == A[i]) ++q; pi[i] = q; }
dc intotdeauna in while() se pune q=pi[q]? Din moment ce elementele nu sunt egale de ce nu se sare direct la q=0 deoarece de acolo incepe prefixul. As vrea o explicatie si un exemplu eventual care nu functioneaza corect pe ceea ce am spus eu
|
|
|
4
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 198 Custi
|
: Martie 02, 2015, 19:32:20
|
ce e gresit la dinamica asta ca iau numai 10 pct
for(i=1;i<=n;i++) for(j=1;j<=n;j++) {int u=0; fscanf(f,"%d",&z); if(z==1) {m[j]=1; } if(m[i-1][j-1]!=0&&z==1) { if(m[i-1][j]==m[j-1]) {if(m[i-m[i-1][j]][j-m[i-1][j]]!=0) m[j]=m[i-1][j]+1; else {m[j]=m[i-1][j]; } } else if(m[i-1][j]>m[j-1]&&(m[i-1][j]!=0&&m[j-1]!=0)) m[j]=m[i-1][j]; else if(m[i-1][j]<m[j-1]&&(m[i-1][j]!=0&&m[j-1]!=0)) m[j]=m[j-1]; } }
am gasit problema
|
|
|
5
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 198 Custi
|
: Martie 02, 2015, 19:30:06
|
ce e gresit la dinamica asta ca iau numai 10 pct
for(i=1;i<=n;i++) for(j=1;j<=n;j++) {int u=0; fscanf(f,"%d",&z); if(z==1) {m[j]=1; } if(m[i-1][j-1]!=0&&z==1) { if(m[i-1][j]==m[j-1]) {if(m[i-m[i-1][j]][j-m[i-1][j]]!=0) m[j]=m[i-1][j]+1; else {m[j]=m[i-1][j]; } } else if(m[i-1][j]>m[j-1]&&(m[i-1][j]!=0&&m[j-1]!=0)) m[j]=m[i-1][j]; else if(m[i-1][j]<m[j-1]&&(m[i-1][j]!=0&&m[j-1]!=0)) m[j]=m[j-1]; } }
|
|
|
8
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1203 Robot3
|
: Februarie 10, 2015, 20:31:21
|
de ce iau numai incorect ca pe testele pe care am incercat merge.Un hint ceva? #include<iostream> using namespace std; #include<fstream> int n,m,x,y,a[1005][1005],i,j,vr; long long suma; char s[5005]; int main() { fstream f("robot3.in"); ofstream g("robot3.out"); f>>n; f>>m; f>>x; f>>y; for(i=0;i<m;i++) f>>s ; for(i=1;i<=n;i++) for(j=1;j<=n;j++) f>>a[j]; suma=a if(s[0]=='S') x++; else if(s[0]=='E') y++; else if(s[0]=='V') y--; else if(s[0]=='N') x--; for(i=1;i<m;i++) { suma=(suma+a if(suma<0) {vr=1; g<<x<<" "<<y; break; } if(s=='S') {x++; if(suma==0&&suma+a { g<<x-1<<" "<<y; vr=1; break;} } else if(s=='E') {y++; if(suma==0&&suma+a { g<<x<<" "<<y-1; vr=1; break;} } else if(s=='V') {y--; if(suma==0&&suma+a { g<<x<<" "<<y+1; vr=1; break;} } else if(s=='N') {x--; if(suma==0&&suma+a { g<<x+1<<" "<<y; vr=1; break;} } } if(vr==0) {g<<x<<" "<<y; } }
|
|
|
10
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1097 Difprim
|
: Ianuarie 31, 2015, 20:54:17
|
ce este gresit la sursa asta ca da incorect pe testu 1
#include<iostream> using namespace std; #include<stdio.h> #include<math.h> int i,j,a,b,maxim,u,q,w,t,nr; bool c[10000000]; FILE *f,*g; int main() { f=fopen("difprim.in","r"); g=fopen("difprim.out","w"); fscanf(f,"%d %d",&a,&b); for (i = 3; i <= sqrt(b); i += 2) { if (c == 0) { for (j = i+i+i; j <= b; j += i << 1) { c[j] = 1; } } } if(a%2==0) a++; for(i=a;i<=b;i=i+2) if(!c) {u=i; break;} for(i=u+2;i<=b;i=i+2) if(c==0) { if(i-u>maxim) { maxim=i-u; q=u; w=i; } u=i; } if(q!=w&&q!=0&&w!=0) fprintf(g,"%d %d",q,w); else fprintf(g,"-1"); }
|
|
|
12
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 026 Energii
|
: Decembrie 05, 2014, 22:09:52
|
de ce i-au TLE pe sursa asta?
#include<iostream> using namespace std; int greu[10001],pierd[10001],castig[1000000],i,n,s=999999999,cautat,smax,j; #include<fstream> ifstream f("energii.in"); ofstream g("energii.out"); int main() { f>>n>>cautat; for(i=1;i<=n;i++) {f>>greu>>pierd; smax=smax+greu; } for(i=1;i<=smax;i++) castig=999999999; for(i=1;i<=n;i++) for(j=smax-greu;j>=0;j--) if(castig[j+greu]>castig[j]+pierd) { castig[j+greu]=castig[j]+pierd; } int maximul=999999999; for(i=cautat;i<=smax;i++) if(maximul>castig) maximul=castig; if(maximul!=999999999) g<<maximul; else g<<"-1"; }
|
|
|
16
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 886 Numar3
|
: Noiembrie 29, 2014, 17:28:43
|
ce poate avea testul 9 ca i-au incorect #include<iostream> using namespace std; #include<fstream> ifstream f ("numar3.in", ifstream::in); ofstream g ("numar3.out",ofstream::out); char aux[3],nr[3]; long int i,n,indice,finalu,frecv[12],minim=10,x; int main() { f>>n; f>>aux[0]; frecv[aux[0]-48]++; for(i=1;i<n;i++) { f>>nr[0]; frecv[nr[0]-48]++; if(aux[0]>=nr[0]) indice++; if(aux[0]<nr[0]||i==n-1) { if(i==n-1&&indice==1) { finalu=n-indice; } else finalu=n-indice-1; indice=0;
} aux[0]=nr[0]; } finalu--; ifstream f ("numar3.in", ifstream::in); f>>n; for(i=0;i<finalu;i++) { f>>aux[0]; g<<aux[0]; frecv[aux[0]-48]--; } f>>nr[0]; for(i=(nr[0]-48)+1;i<=9;i++) { if(frecv!=0) { minim=i; frecv[minim]--; break; } } g<< minim; for(i=0;i<=9;i++) if(frecv!=0) { for(int j=1;j<=frecv;j++) g<<i; } }
|
|
|
20
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 126 Lungimi de interval
|
: Februarie 17, 2014, 21:19:34
|
#include<iostream> using namespace std; #include<stdio.h> #include<stdlib.h> FILE *f,*g; int n,i,j,t; struct punct { long long a,b; }; punct c[5005]; int aux[5005]; long long num; int tu(int p,int m,int q) {punct b[5005]; int i1=p,i2=m+1,x=0; while(i1<=m&&i2<=q) { if(c[i1].a<c[i2].a) { b[x]=c[i1]; x++; i1++; } else if(c[i1].a>c[i2].a) { b[x]=c[i2]; x++; i2++; } else { if(c[i1].b<c[i2].b) { b[x]=c[i1]; x++; i1++; } else { b[x]=c[i2]; x++; i2++; } } } while(i1<=m) { b[x]=c[i1]; x++; i1++; } while(i2<=q) { b[x]=c[i2]; x++; i2++; } for(int z=p;z<=q;z++) c[z]=b[z-p]; } int io(int p,int q) { if(p<q) { int mij=(p+q)/2; io(p,mij); io(mij+1,q); tu(p,mij,q); } } int main() { f=fopen("linterv.in","r"); g=fopen("linterv.out","w"); fscanf(f,"%d",&t); while(t) {i=0; i++; num=0; fscanf(f,"%d",&n); for(i=1;i<=n;i++) fscanf(f,"%lld%lld",&c[i].a,&c[i].b); io(1,n); int x=1; for(i=2;i<=n;i++) {if(i==x) i++;
if(c[i].b>=c[x].b&&aux[i]==0&&c[i].a<=c[x].b) { if(c[i].b-c[x].b<0) num=num-(c[i].b-c[x].b); else num=num+c[i].b-c[x].b; aux[i]=1;} else if(c[i].b<=c[x].b&&c[i].a>=c[x].a) aux[i]=1; else if(c[i].a>=c[x].b) {x++; i--; }
} for(i=1;i<=n;i++) if(aux[i]==0) { if(c[i].b-c[x].b<0) num=num-(c[i].b-c[x].b); else num=num+c[i].b-c[x].b; } fprintf(g,"%lld",num); for(i=1;i<=n;i++) {aux[i]=0; c[i].a=c[i].b=0; } n=0; t--; } }
|
|
|
21
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 024 Sume
|
: Februarie 17, 2014, 18:13:42
|
pai am obs faptul ca daca ai 6 numere in fisierul de iesire o sa faci sume de 5+4+3+2+1 si iti dau 15 perechi cum este in cel de intrare si am mai facut ceva obs si am reusit sa il aflu cate numere vor fi in cel de iesire folosindu-ma de cel de intrare. acuma sper ca este bine gandirea altfel corecteaza-ma ca sa refac.
|
|
|
24
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1000 Taxe2
|
: Februarie 16, 2014, 13:56:58
|
#include<iostream> using namespace std; #include<stdio.h> const int x1[4]={1,-1,0,0}; const int y1[4]={0,0,-1,1}; FILE *f,*g; short int a[161][161],c[161][161],i,j,n,inceput=1,sfarsit=1,s,k; struct punct { short int ls,ld,d; }; punct coada [199999999],x,y; int main() { f=fopen("taxe2.in","r"); g=fopen("taxe2.out","w"); fscanf(f,"%hd%hd",&s,&n); for(i=1;i<=n;i++) for(j=1;j<=n;j++) {fscanf(f,"%hd",&a [j]);
} for(i=1;i<=n;i++) { c[0]=c[n+1]=-1; c } coada[inceput].ls=coada[inceput].ld=1; coada[inceput].d=a[j]; c[1][1]=a[1][1]; while(inceput<=sfarsit) { x=coada[inceput]; inceput++; for(k=0;k<4;k++) { if(c[x.ls+x1[k]][x.ld+y1[k]]==0) { c[x.ls+x1[k]][x.ld+y1[k]]=c[x.ls][x.ld]+a[x.ls+x1[k]][x.ld+y1[k]]; y.ls=x.ls+x1[k]; y.ld=x.ld+y1[k]; sfarsit++; coada[sfarsit]=y; } else if(c[x.ls][x.ld]+a[x.ls+x1[k]][x.ld+y1[k]]<c[x.ls+x1[k]][x.ld+y1[k]]) { c[x.ls+x1[k]][x.ld+y1[k]]=c[x.ls][x.ld]+a[x.ls+x1[k]][x.ld+y1[k]]; y.ls=x.ls+x1[k]; y.ld=x.ld+y1[k]; sfarsit++; coada[sfarsit]=y; } } } if(s-c[n][n]>=0) fprintf(g,"%hd",s-c[n][n]); else fprintf(g,"-1"); } de ce i-au pe testu 7,9,10 killsiegv 11?
|
|
|
|