Pagini recente » Cod sursa (job #1557772) | Cod sursa (job #395429)
Cod sursa(job #395429)
#include <cstdio>
#include <deque>
using namespace std;
const int NMAX=5000000;
int A[NMAX];
int main()
{
FILE *fin=fopen("deque.in","r");
int n,k,i;
fscanf(fin,"%d%d",&n,&k);
for (i=1;i<=n;++i) fscanf(fin,"%d",&A[i]);
long long S=0;
deque <int> D;
for (i=1;i<k;++i)
{
while (!D.empty() && A[D.back()]>=A[i]) D.pop_back();
D.push_back(i);
}
while (i<=n)
{
while (!D.empty() && A[D.back()]>=A[i]) D.pop_back();
D.push_back(i);
if (D.front()<=i-k) D.pop_front();
S+=A[D.front()];
i++;
}
fclose(fin);
FILE *fout=fopen("deque.out","w");
fprintf(fout,"%lld",S);
fclose(fout);
return 0;
}