Cod sursa(job #1124221)

Utilizator alexteStefanescu Alexandru Catalin alexte Data 26 februarie 2014 11:49:27
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
 #include <fstream>
 int n,k,i,x[5000003],m,p;
 long long s;
 using namespace std;
 struct coada
 {
     int x,poz;
} c[5000003];
int main()
{
    ifstream fin("deque.in");
    ofstream fout("deque.out");
    fin>>n>>k;
    for(i=1;i<=n;++i)
    {
        fin>>x[i];
    }
    m=1;
    c[m].x=x[1];
    c[m].poz=1;
    for(i=2;i<=k;i++)
    {
        while(m>0&&c[m].x>=x[i])
            m--;
        m++;
        c[m].x=x[i];
        c[m].poz=i;
    }
    s=c[1].x;
    p=1;
    for(i=k+1;i<=n;i++)
    {
        if(c[p].poz==i-k) p++;
        while(m>=p&&c[m].x>=x[i]) m--;
        m++;
        c[m].x=x[i];
        c[m].poz=i;
        s=s+c[p].x;
    }
    fout<<s<<'\n';
    fout.close();
    return 0;
}