Cod sursa(job #51441)
| Utilizator | Data | 12 aprilie 2007 21:17:33 | |
|---|---|---|---|
| Problema | Buline | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.55 kb |
#include<stdio.h>
int main()
{long n,start,i,k=1,val,st,dr,rez,a[400001],s[400001];
long p;
int x;
FILE*f=fopen("buline.in","r");
FILE *g=fopen("buline.out","w");
fscanf(f,"%ld",&n);
for (i=1;i<=n;i++)
{fscanf(f,"%ld %d",&a[i],&x); if (x==0) a[i]=-a[i]; a[i+n]=a[i];s[i]=s[i-1]+a[i];s[i+n]=s[i];}
rez=s[k]; st=1; dr=k;
val=s[k];
start=1;
for (i=k+1;i<=n;i++)
{val=val+a[i];
if (val<s[i]-s[i-k]) {val=s[i]-s[i-k];
start=i-k+1;}
if (rez<val) {rez=val; st=start;dr=i;}}
fprintf(g,"%ld %ld %ld",st,dr,rez);
fclose(f);
fclose(g);
return 0;}