Cod sursa(job #1181897)
| Utilizator | Data | 4 mai 2014 10:34:41 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.55 kb |
#include<fstream>
#define nmax 5000009
using namespace std;
int v[nmax],front,back,deq[nmax];
long long sum;
int main()
{
ifstream in("deque.in");
ofstream out("deque.out");
int n,i,k;
in>>n>>k;
for(i = 1 ; i <= n ; i++)
in>>v[i];
back = 0;
front = 1;
for(i = 1 ; i <= n ; i++)
{
while(back >= front && v[i] <= v[deq[back]])
back--;
deq[++back] = i;
if(deq[front] == i-k) front++;
if(i >= k) sum+=v[deq[front]];
}
out<<sum;
return 0;
}
