Pagini recente » Cod sursa (job #1388456) | Cod sursa (job #2882325) | Cod sursa (job #2858072) | Cod sursa (job #2089883) | Cod sursa (job #1346370)
#include <iostream>
#include <fstream>
#define N 5000002
using namespace std;
struct str
{
int nr,p;
};
str dq[N];
int st,dr,n,k;
int a[N];
long long sol;
void Afisare()
{
for(int i=st; i<=dr; i++)
cout<<dq[i].nr<<" ";
cout<<"\n";
}
int main()
{
ifstream fin("deque.in");
fin>>n>>k;
int i;
for(i=1; i<=n; i++)
fin>>a[i];
st=0; dr=-1;
for(i=1; i<=k; i++)
{
while(dq[dr].nr>=a[i] && dr>st)
dr--;
dq[++dr].nr=a[i];
dq[dr].p=i;
}
sol+=dq[st].nr;
//Afisare();
for(i=k+1; i<=n; i++)
{
if(dq[st].p < i-k+1)
st++;
if(dq[dr].nr>=a[i])
{
while(dq[dr].nr>=a[i] && dr>st)
dr--;
dq[dr].nr=a[i];
} else dq[++dr].nr=a[i];
dq[dr].p=i;
sol+=dq[st].nr;
// Afisare();
}
ofstream fout("deque.out");
fout<<sol<<" ";
return 0;
}