Cod sursa(job #2716116)
| Utilizator | Data | 4 martie 2021 18:48:34 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.58 kb |
#include <fstream>
using namespace std;
const int N = 5e6;
int v[N], dq[N+1];
int main(){
ifstream in("deque.in");
ofstream out("deque.out");
int n, k, st, dr;
long long s = 0;
in>>n>>k;
st = 1, dr = 0;
for(int i=0;i < n; ++i) {
in >> v[i];
if (st <=dr && dq[st] == i - k)
++st; //pop back
while (st <=dr && v[i] <=v[dq[dr]])
dr--; //pop front
dq[++dr] = i;
if (i >= k - 1)
s +=v[dq[st]];
}
out<<s;
in.close();
out.close();
return 0;
}
