Cod sursa(job #39331)

Utilizator razvi9Jurca Razvan razvi9 Data 26 martie 2007 17:25:07
Problema Secventa 2 Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<stdio.h>
int n,ki,i;
typedef struct nod
 {int x;int i,s;long sum;nod *urm;};
nod *p;
void citire()
{scanf("%d %d",&n,&ki);
 if(n==0) return;
 p=new nod;
 scanf("%d",&p->x);
 p->i=1;
 nod *u,*t;
 u=p;
 for(i=2;i<=n;i++)
 {t=new nod;
  scanf("%d",&t->x);
  t->i=i;
  u->urm=t;
  u=t;}
 u->urm=NULL;}
void solve()
{nod *j,*k,*m;
 m=NULL;
 long s;
 for(i=1,j=p;i<=(n-ki);i++,j=j->urm)
 {k=j;
  j->sum=0;
  for(;k->i<=i+ki-1;k=k->urm)
   j->sum=j->sum+k->x;
  j->s=i+ki-1;
  s=j->sum;
  for(;k;k=k->urm)
  {s=s+k->x;
   if(s>j->sum){j->sum=s;j->s=k->i;}}
  if(!m||j->sum>m->sum) m=j;}
 printf("%d %d %ld\n",m->i,m->s,m->sum);
 }
int main()
{freopen("secv2.in","r",stdin);
 char buf[1000000];
 setvbuf(stdin,buf,_IOFBF,1000000);
 freopen("secv2.out","w",stdout);
 citire();
 solve();
 fclose(stdout);
 return 0;}