Cod sursa(job #2351907)
| Utilizator | Data | 22 februarie 2019 19:56:07 | |
|---|---|---|---|
| Problema | Deque | Scor | 25 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.64 kb |
#include <cstdio>
#include <deque>
using namespace std;
deque <int> d1,d2;
int main (){
FILE *fin=fopen ("deque.in","r");
FILE *fout=fopen ("deque.out","w");
int n,k,i,s=0,nr;
fscanf (fin,"%d %d",&n,&k);
for (i=1;i<=n;i++){
fscanf (fin,"%d",&nr);
while (!d1.empty() && d2.front()<i-k+1){
d1.pop_front();
d2.pop_front();
}
while (!d1.empty() && nr<d1.back()){
d1.pop_back();
d2.pop_back();
}
d1.push_back(nr);
d2.push_back(i);
if (i>=k)
s+=d1.front();
}
fprintf (fout,"%d",s);
}
