Cod sursa(job #1314055)
| Utilizator | Data | 11 ianuarie 2015 14:47:46 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.58 kb |
#include <cstdio>
#define NMAX 5000003
using namespace std;
int v[NMAX],d[NMAX],pr=1,ul=0,n,k;
long long int s=0;
int main()
{
int i;
FILE *f=fopen("deque.in","r");
fscanf(f,"%d%d",&n,&k);
for(i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
fclose(f);
for (i=1;i<=n;i++)
{
while((v[i]<=v[d[ul]])&&(pr<=ul))
ul--;
d[++ul]=i;
if(d[pr]==i-k)
pr++;
if(i>=k)
s+=v[d[pr]];
}
f=fopen("deque.out","w");
fprintf(f,"%lld",s);
fclose(f);
return 0;
}
