Cod sursa(job #820312)

Utilizator vladm97Matei Vlad vladm97 Data 20 noiembrie 2012 18:22:00
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.49 kb
#include<cstdio>
#include<cstdlib>
FILE *f;
FILE *g;
using namespace std;
int main ()
{int *a,*poz,n,k,i,st=0,dr=-1;
long long s=0;
f=fopen("deque.in","r");
g=fopen("deque.out","w");
fscanf(f,"%d%d",&n,&k);
a=(int*)malloc((n+1)*sizeof(int));
poz=(int*)malloc((n+1)*sizeof(int));
st=1;
dr=0;
for(i=0;i<n;i++)
	fscanf(f,"%d",&a[i]);
for(i=0;i<n;i++)
{while(dr>=st&&a[i]<=a[poz[dr]])dr--;
poz[++dr]=i;
if(poz[st]+k==i)st++;
if(i>=k-1)s+=a[poz[st]];
}
fprintf(g,"%lld",s);
return 0;}