Pagini recente » Cod sursa (job #401253) | Cod sursa (job #32318) | Cod sursa (job #320759) | Cod sursa (job #400558)
Cod sursa(job #400558)
#include <fstream>
using namespace std;
#define nmax 5000001
#define ll long long
ifstream f("deque.in");
ofstream g("deque.out");
ll a[nmax];
long deque[nmax];
ll c1,c2,k,n,i,sum;
#define deque (deque-1)
#define a (a-1)
int main()
{
c1=1;
f>>n>>k;
for(i=1;i<=n;++i) f>>a[i];
for(i=1;i<=n;++i)
{
//1. elimin toate minimele mai mari sau egale cu x
while(c1<=c2 && a[i]<=a[deque[c2]])
--c2;
//2. il plasez pe x in locul lui c2
deque[++c2]=i;
if(deque[c1]==i-k)
++c1;
if(i>=k)
sum+=a[deque[c1]];
}
ofstream g("deque.out");
g<<sum;
return 0;
}