Cod sursa(job #3237362)

Utilizator popescu_georgePopescu George popescu_george Data 8 iulie 2024 16:32:57
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#pragma GCC optimize("O3,unroll-loops")
#include<bits/stdc++.h>
using namespace std;
class I {
    private:
        FILE *F;
        char *s;
        int p;
        char A()
        {
            if(++p==4096)
                p=0,fread(s,1,4096,F);
            return s[p];
        }
    public:
        I(const char *t)
        {
            F=fopen(t,"r");
            s=new char[4096]();
            p=4095;
        }
        I &operator>>(int &n)
        {
            char c;
            for(;!isdigit(c=A())&&c!='-';);
            int r=1;
            for(c=='-'?n=0,r=-1:n=c-48;isdigit(c=A());n=10*n+c-48);
            n*=r;
            return *this;
        }
};
I F("deque.in");
ofstream G("deque.out");
deque<int> q;
int v[5000001];
int main()
{
    int n,k,i,j=0;
    for(F>>n>>k,i=1;i<=n;F>>v[i++]);
    for(i=1;i<=k;q.push_back(i++))
        for(;!q.empty()&&v[q.back()]>v[i];q.pop_back());
    long long z=0;
    for(z+=v[q.front()],i=k+1;i<=n;q.push_back(i++),z+=v[q.front()]) {
        for(++j;!q.empty()&&q.front()<=j;q.pop_front());
        for(;!q.empty()&&v[q.back()]>v[i];q.pop_back());
    }
    return G<<z,0;
}