Cod sursa(job #1181919)
Utilizator | Preda Armand armandpreda | Data | 4 mai 2014 11:52:06 |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.55 kb |
#include <cstdio>
#define MAX 5000001
using namespace std;
FILE*fin=fopen("deque.in","r");
FILE*fout=fopen("deque.out","w");
int n,k,v[MAX],q[MAX], p, u;
long long rez;
int main()
{
int i;
fscanf(fin,"%d%d",&n,&k);
for(i=1;i<=n;++i)
fscanf(fin,"%d",v+i);
p = 1;
for(i=1; i<=n; i++){
while(p<=u and v[q[u]]>=v[i]) u--;
q[++u] = i;
if(q[p]==i-k) p++;
if(i>=k)
rez = rez+v[q[p]];
}
fprintf(fout, "%lld\n", rez);
fclose(fin);
fclose(fout);
return 0;
}