Pagini recente » Monitorul de evaluare | Cod sursa (job #2011145) | Arhiva de probleme | Monitorul de evaluare | Cod sursa (job #407890)
Cod sursa(job #407890)
#include<cstdio>
#include<deque>
using namespace std;
const int N=5000005;
int v[N],n,k;
long long rez;
deque <int> q;
void read()
{
scanf("%d%d",&n,&k);
for( int i=1 ; i<=n ; ++i )
scanf("%d",&v[i]);
}
void dreapta( int i )
{
while(!q.empty() && v[i]<=v[q.back()])
q.pop_back();
}
void stanga( int i )
{
if( i-k == q.front() )
q.pop_front();
}
void solve()
{
for( int i=1 ; i<=n ; ++i )
{
dreapta(i);
q.push_back(i);
stanga(i);
if(i>=k)
rez+=v[q.front()];
}
printf("%d",rez);
}
int main()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
read();
solve();
return 0;
}