Cod sursa(job #97122)

Utilizator pandaemonAndrei Popescu pandaemon Data 5 noiembrie 2007 13:38:08
Problema Secventa 2 Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>
#include <iostream.h>

FILE*fin=fopen("secv2.in","r");
FILE*fout=fopen("secv2.out","w");

long n,k,i,j,suma=-2000000000,cur,var,max,v[50001],c[50001][3],k2,ind;


int algoritm()
{var=0; max=-200000000; k2=0;
for(long j=v[c[i-1][1]+2];j<=n;j++) {var+=v[j]; if(var>max) {max=var; ind=j;}}
if(max>0) {c[i][0]=max; c[i][1]=ind;} }


int main()
{
fscanf(fin,"%ld %ld",&n,&k);

for(i=1;i<=n;i++) fscanf(fin,"%ld",&v[i]);
					max=0;
for(i=1;i<=n;i++) {var+=v[i]; max++; if(var>suma && max>=k) {suma=var; c[1][1]=i;}  }
c[1][0]=suma;

for(i=2;i<=n-k+1;i++) {
		       c[i][0]=c[i-1][0]-v[i-1]; c[i][1]=c[i-1][1];
		       if(c[i-1][1]-i+1<k) {c[i][0]+=v[c[i-1][1]+1]; algoritm();} }

max=c[1][0];  ind=1;
for(i=2;i<=n-k+1;i++) {cout<<c[i][0]<<" "<<i<<endl; if(c[i][0]>max) {max=c[i][0]; ind=i;} }
				cout<<endl;
fprintf(fout,"%ld %ld %ld",ind,c[ind][1],c[ind][0]); }