Cod sursa(job #1146508)
| Utilizator | Data | 19 martie 2014 01:36:00 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.61 kb |
#include <fstream>
const int NMAX = 5000005;
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int N,K,Deque[NMAX],front,back,A[NMAX];
long long sol;
int main()
{
f >> N >> K;
for (int i = 1; i <= N; ++i)
{
f >> A[i];
}
back = 0;
front = 1;
for (int i = 1; i <= N; ++i)
{
while (front <= back && A[i] <= A[ Deque[back] ])
back--;
Deque[++back] = i;
if (Deque[front] == i-K)
front ++;
if (i >= K)
sol += A[ Deque[front] ];
}
g << sol;
}
