Cod sursa(job #322960)
| Utilizator | Data | 10 iunie 2009 14:26:18 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.53 kb |
#include<fstream>
#define maxn 5500003
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int a[maxn],i,deque[maxn],n,p,q,k;
void add(int x)
{
while(q>=p&&a[deque[q]]>=a[x]) --q;
deque[++q]=x;
}
long long s;
int main()
{
f>>n>>k;
p=1;
q=1;
for(i=1;i<=n;++i)
{
f>>a[i];
add(i);
while(deque[p]<=i-k) ++p;
if(i>=k) s+=a[deque[p]];
}
g<<s<<"\n";
f.close();
g.close();
return 0;
}
