Cod sursa(job #1142157)

Utilizator andreeadeacAndreea Ioana Deac andreeadeac Data 13 martie 2014 16:01:03
Problema Secventa 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <fstream>
using namespace std;

ifstream f("secv2.in");
ofstream g("secv2.out");

int n,k,v[50001],s[50001];
struct {int beg, end;}a[50001];

int main()
{
    f>>n>>k;
    int j,smax=-1250000000,i,pc,sc,umax,pmax;
    s[0]=0;
    for(i=1;i<=k;i++){
        f>>v[i];
        s[i]=s[i-1]+v[i];
    }
    a[k].beg=1;
    a[k].end=k;
    sc = smax = s[k];
    pc = pmax = 1;
    umax = k;
    for(i=k+1;i<=n;i++){
        f>>v[i];
        s[i] = s[i-1] + v[i];
        if (s[i] - s[i - k] > sc + v[i])
        {
            pc = i - k + 1;
            sc = s[i] - s[i - k];
        }
        else
        {
            sc += v[i];
        }
        if (sc > smax)
        {
            smax = sc;
            pmax = pc;
            umax = i;
        }
        /*if (s[i])
        if(s[i-1]+v[i]<=s[i-1]+v[i]-v[i-k]){
            a[i].beg=i-k+1;
            a[i].end=i;
            s[i]=s[i-1]+v[i]-v[i-k];
        }
        else{
            a[i].beg=a[i-1].beg;
            a[i].end=i;
            s[i]=s[i-1]+v[i];
        }
            /*if(suma ultimilor k...){
            s=0;
            ind=i;
        }
        s+=x;
        if(s>smax && i-ind+1>=k){
            smax=s;
            beg=ind;
            end=i;
        }
        */
    }
    g<<pmax<<" "<<umax<<" "<<smax<<"\n";
    return 0;
}