Cod sursa(job #501506)
Utilizator | Data | 15 noiembrie 2010 12:56:49 | |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.47 kb |
#include<deque>
#include<cstdio>
#include<fstream>
using namespace std;
#define m 5000010
int n,k;
int v[m];
long long S;
deque< int > q;
int main()
{
ifstream in ("deque.in");
in>>n>>k;
for(int i=1;i<=n;i++)
in>>v[i];
in.close ();
for(int i=1;i<=n;++i)
{
for(;q.size()&&v[i]<=v[q.back()];q.pop_back());
q.push_back(i);
if(q.front()==i-k) q.pop_front();
if (i>=k) S+=v[q.front()];
}
freopen("deque.out", "w", stdout);
printf("%lld", S);
return 0;
}