Pagini recente » Borderou de evaluare (job #3047961) | Monitorul de evaluare | Cod sursa (job #3306933) | Monitorul de evaluare | Cod sursa (job #1576472)
#include <stdlib.h>
#include <stdio.h>
#include <deque>
using namespace std;
deque<int> d;
deque<int> p;
int main()
{
FILE *fin, *fout;
int n,k,x,poz,i,s;
fin=fopen("deque.in","r");
fout=fopen("deque.out","w");
fscanf(fin,"%d%d",&n,&k);
fscanf(fin,"%d",&x);
d.push_back(x);
p.push_back(0);
for(i=1;i<k;i++){
fscanf(fin,"%d",&x);
while(d.empty()==0 && d.back()>x){
d.pop_back();
p.pop_back();
}
d.push_back(x);
p.push_back(i);
}
s=0;
for(i;i<n;i++){
if(p.front()==i-k){
s+=d.front();
d.pop_front();
p.pop_front();
}
fscanf(fin,"%d",&x);
while(d.empty()==0 && d.back()>x){
d.pop_back();
p.pop_back();
}
d.push_back(x);
p.push_back(i);
}
s+=d.front();
fprintf(fout,"%d",s);
fclose(fin);
fclose(fout);
return 0;
}