Cod sursa(job #3162551)
Utilizator | Data | 29 octombrie 2023 13:23:04 | |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.62 kb |
#include <fstream>
#include <algorithm>
#include <climits>
using namespace std;
ifstream fin ("deque.in");
ofstream fout("deque.out");
int v[5000001];
int dq[5000001];
int n,i,k;
long long sum;
int main()
{
fin>>n>>k;
int st=0,dr=0;
v[0]=INT_MIN;
for(i=1;i<=n;i++){
fin>>v[i];
while(i-dq[st]+1>k) ///elimin de la inceput deoarece lungimea secvntei ce se termina in i este mai mare decat k
st++;
while(st<=dr && v[i]<=v[dq[dr]])
dr--;
dq[++dr]=i;
if(i>=k)
sum=sum+v[dq[st]];
}
fout<<sum;
return 0;
}