Cod sursa(job #2737940)
| Utilizator | Data | 5 aprilie 2021 12:33:50 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.63 kb |
//Ilie Dumitru
#include<cstdio>
#include<deque>
int A[5000005];
int main()
{
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
std::deque<int> dq;
int i, N, K;
long long int s=0;
scanf("%i%i", &N, &K);
for(i=0;i<N;++i)
scanf("%i", &A[i]);
fclose(stdin);
for(i=0;i<N;++i)
{
while(!dq.empty() && A[dq.back()]>A[i])
dq.pop_back();
dq.push_back(i);
if(dq.front()==i-K)
dq.pop_front();
if(i+1>=K)
s+=A[dq.front()];
}
printf("%lli", s);
fclose(stdout);
return 0;
}