Pagini recente » Cod sursa (job #1744511) | Cod sursa (job #580372) | Cod sursa (job #690376) | Cod sursa (job #1031502) | Cod sursa (job #2060859)
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int d[5000001],v[5000001];
int main()
{
long long st=0,dr=-1,k,n,s=0;
f>>n>>k;
for(int i=0;i<n;i++)
{
f>>v[i];
if(st<=dr&&d[st]==i-k) st++;//am terminat o secventa de k elemente
while(st<=dr&&v[i]<=v[d[dr]]) dr--;//daca gasesc elemente in stanga lui x>v[i] il scot din deque
d[++dr]=i;//pstrz pozitiile minimelor posibile
if(i>=k-1) s+=v[d[st]];// adun minimul gasit
}
g<<s;
f.close();
g.close();
return 0;
}