Pagini recente » Cod sursa (job #1532982) | Cod sursa (job #1453342) | Cod sursa (job #274832) | Cod sursa (job #2642277) | Cod sursa (job #97122)
Cod sursa(job #97122)
#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]); }