Pagini recente » Cod sursa (job #1080220) | Cod sursa (job #932494) | Cod sursa (job #160452) | Cod sursa (job #1356081) | Cod sursa (job #701184)
Cod sursa(job #701184)
#include <fstream>
using namespace std;
ifstream f("dequeue.in");
ofstream g("dequeue.out");
int n,k,dq[2][5000010],start,end=1,i;
long long sum;
void add(int x)
{
bool ok=false;
if(start==0)
{
dq[1][++start]=x;
dq[0][start]=1;
return;
}
while(dq[1][end]>x&&end>=start)
{
dq[1][end--]=x;
dq[0][end+1]=i;
ok=true;
}
dq[1][++end]=x;
dq[0][end]=i;
while(dq[0][start]<=i-k)
start++;
}
int main()
{
f>>n>>k;
for(i=1;i<k;i++)
{
int x;
f>>x;
add(x);
}
for(i=k;i<=n;i++)
{
int x;
f>>x;
add(x);
sum+=dq[1][start];
}
g<<sum<<'\n';
return 0;
}