Pagini recente » Diferente pentru problema/deque intre reviziile 11 si 30 | Borderou de evaluare (job #857242) | Cod sursa (job #776597) | Cod sursa (job #239208) | Cod sursa (job #3353786)
#include <fstream>
using namespace std;
int v[5000001], coada[5000001];
ifstream cin("deque.in");
ofstream cout("deque.out");
int main()
{
int n, k, i, inc=0, sf=0;
long long s=0;
cin>>n>>k;
for( i = 1; i <= n; i++ )
cin>>v[i];
for( i = 1; i <= n; i++ ){
while( inc <= sf && v[coada[sf]] >= v[i] )
sf--;
coada[++sf]=i;
if( i >= k ){
while( inc <= sf && coada[inc] < i - k + 1 )
inc++;
s+=v[coada[inc]];
}
}
cout<<s;
return 0;
}