Cod sursa(job #850958)

Utilizator danutbodbodnariuc danut danutbod Data 9 ianuarie 2013 11:41:56
Problema Secventa 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
////var I
//#include <fstream>
//#define NMax 60003
//using namespace std;
//ifstream f("secv2.in");
//ofstream g("secv2.out");
//int i,j,n,m,k,maxi,s,pi,pf,a[NMax],vmax[NMax],pmax[NMax],sum[NMax];
//int main()
//{
//    f>>n>>k;
//    for( i=1; i<=n; i++)f>>a[i];
//    for (i=1; i<=n; i++)sum[i]=sum[i-1]+a[i];
//    maxi=-2000000000;
//    for (i=n; i>=1; i--){
//      if(maxi<=sum[i]){ maxi=sum[i]; vmax[i]=maxi; pmax[i]=i; }
//         else {vmax[i]=maxi;pmax[i]=pmax[i+1];}
//    }
//    maxi=-200000000;
//    for (i=1; i<=n-k+1; i++)
//      if(vmax[i+k-1]-sum[i-1]>maxi)
//        {maxi=vmax[i+k-1]-sum[i-1];pi=i;pf=pmax[i+k-1];}
//    g<<pi<<" "<<pf<<" "<<maxi<<'\n';
//    return 0;
//}
//var II
#include<fstream>
using namespace std;
ifstream f("secv2.in");
ofstream g("secv2.out");
int n,k,x,poz,maxi,mini,pf,pi,i,a[50003];
int main()
{    f>>n>>k;
    for(i=1;i<=n;i++){
        f>>x;
        a[i]=a[i-1]+x;
    }
    maxi=-10000000,mini=10000000;
    for(i=k;i<=n;i++){
        if(mini>a[i-k]){
            mini=a[i-k]; poz=i-k+1;
        }
        if(maxi<a[i]-mini){
            maxi=a[i]-mini;
            pi=poz;
            pf=i;
        }
    }
    g<<pi<<" "<<pf<<" "<<maxi<<'\n';
    return 0;
}