Mai intai trebuie sa te autentifici.
Cod sursa(job #613168)
| Utilizator | Data | 17 septembrie 2011 11:50:10 | |
|---|---|---|---|
| Problema | Deque | Scor | 60 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.55 kb |
#include <cstdio>
#include <iostream>
#include <deque>
#include <vector>
using namespace std;
int n,k;
int v[500005];
deque <int> d;
int main()
{
int i;
freopen("deque.in","r", stdin);
scanf("%d %d\n",&n,&k);
for(i=1;i<=n;i++) scanf("%d ",&v[i]);
long long S=0;
for(i=1;i<=n;i++)
{
while(d.size() &&v[d.back()]>=v[i]) d.pop_back();
d.push_back(i);
if(i>=k) S+=v[d.front()];
if(i-k+1==d.front()) d.pop_front();
}
freopen("deque.out","w", stdout);
printf("%lld",S);
fclose(stdin);
fclose(stdout);
return 0;
}
