Cod sursa(job #831842)
| Utilizator | Data | 9 decembrie 2012 12:53:39 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.44 kb |
#include <fstream>
using namespace std;
int D[5000010];
int V[5000010];
int N, p, u, i, K;
long long s;
int main() {
ifstream f("deque.in");
ofstream g("deque.out");
f>>N>>K;
for (i=1;i<=N;i++) {
f>>V[i];
}
p = u = 1;
D[1] = 1; //pozitia lui V[1];
for (i=2;i<=N;i++) {
while (V[i] < V[ D[u] ] && p<=u)
u--;
D[++u] = i;
if (i-D[p] == K)
p++;
if (i >= K)
s += V[D[p]];
}
g<<s;
return 0;
}