Cod sursa(job #2617236)
| Utilizator | Data | 21 mai 2020 01:31:47 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.66 kb |
#include <iostream>
#include <fstream>
#define maxi 5000010
int A[maxi],deq[maxi];
int fr, b;
void pop_front()
{
fr++;
}
void pop_back()
{
b--;
}
void push_back(int val)
{
b++;
deq[b]=val;
}
using namespace std;
int main()
{
ifstream f ("deque.in");
ofstream g ("deque.out");
int N,K;
long long s=0;
f>>N>>K;
for(int i=1;i<=N;i++)
f>>A[i];
fr=1;b=0;
for(int i=1;i<=N;i++)
{
while(fr<=b && A[i]<=A[deq[b]])
pop_back();
push_back(i);
if(deq[fr]==i-K) pop_front();
if(i>=K)
s+=A[deq[fr]];
}
g<<s;
}
