Cod sursa(job #2589406)
Utilizator | Vladimir Sontea JesseMcCree | Data | 26 martie 2020 12:12:41 |
---|---|---|---|
Problema | Deque | Scor | 25 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.64 kb |
#include <bits/stdc++.h>
using namespace std;
FILE *fin, *fout;
int v[5000001];
int dq[5000001];
int main()
{
fin=fopen("deque.in", "r");
fout=fopen("deque.out", "w");
int n, k, front=1, back=0, s=0;
fscanf(fin, "%d%d", &n, &k);
for(int i=1; i<=n; i++)
{
fscanf(fin, "%d", &v[i]);
while(front<=back && v[i]<=v[dq[back]])
{
back--;
}
dq[++back]=i;
if(dq[front]==i-k)
{
front++;
}
if(i>=k)
{
s+=v[dq[front]];
}
}
fprintf(fout, "%d ", s);
return 0;
}