Cod sursa(job #2484499)
| Utilizator | Data | 31 octombrie 2019 10:05:53 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.57 kb |
#include <fstream>
#include <deque>
#define nmax 5000010
using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");
long long int S;
int N,K;
int A[nmax];
deque <int> Q;
int main()
{
in>>N>>K;
for(int i = 1; i <= N; i++)
in>>A[i];
for(int i = 1; i <= N; i++)
{
while(!Q.empty() && A[i] <= A[Q.back()])
Q.pop_back();
Q.push_back(i);
if(Q.front() == i-K)
Q.pop_front();
if(i >= K)
S += A[Q.front()];
}
out<<S;
return 0;
}
