Mai intai trebuie sa te autentifici.
Cod sursa(job #1990241)
Utilizator | Data | 10 iunie 2017 22:20:08 | |
---|---|---|---|
Problema | Deque | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.54 kb |
#include<fstream>
#include<deque>
using namespace std;
int main(){
ifstream in("deque.in"); ofstream out("deque.out");
int n,k,x;
long long s=0;
in>>n>>k;
deque<int> dq;
deque<int> poz;
in>>x; dq.push_back(x); poz.push_back(0);
if(k==1 || n==1) s+=x;
for(int i=1;i<n;i++){
in>>x;
while(x<=dq.back() && !dq.empty()){
dq.pop_back();
poz.pop_back();
}
dq.push_back(x); poz.push_back(i);
if(poz.front()<=i-k && !poz.empty()) {dq.pop_front(); poz.pop_front();}
if(i>=k-1) s+=dq.front();
}
out<<s;
return 0;
}