Pagini recente » Cod sursa (job #2006086) | Monitorul de evaluare | Cod sursa (job #473089) | Cod sursa (job #1443574) | Cod sursa (job #820312)
Cod sursa(job #820312)
#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;}