Pagini recente » Cod sursa (job #2078715) | Cod sursa (job #1985400) | Cod sursa (job #1653796) | Cod sursa (job #28745) | Cod sursa (job #770025)
Cod sursa(job #770025)
#include <cstdio>
#include <deque>
#define FILEIN "deque.in"
#define FILEOUT "deque.out"
#define NMAX 5000010
using namespace std;
deque<int> minim;
int A[NMAX];
int main()
{
int N, K, i, x;
long long S = 0;
FILE* fin = fopen(FILEIN, "r");
FILE* fout = fopen(FILEOUT, "w");
fscanf(fin, "%d %d", &N, &K);
for ( i = 1; i <= N; i++)
{
fscanf(fin, "%d", &x);
A[i] = x;
if(!minim.empty())
while(x <= A[minim.front()] && !minim.empty())
{
minim.pop_front();
}
minim.push_front(i);
if(minim.back() == i-K)
minim.pop_back();
if(i >= K)
{
S += A[minim.back()];
}
}
fclose(fin);
fprintf(fout, "%lld\n", S);
fclose(fout);
return 0;
}