Pagini recente » Cod sursa (job #504223) | Cod sursa (job #1786048) | Cod sursa (job #769172) | Cod sursa (job #504159) | Cod sursa (job #770177)
Cod sursa(job #770177)
#include<stdio.h>
#include<deque>
using namespace std;
#define MAXN 5000002
deque <int> D;
int v[ MAXN ], n, k;
long long int s;
void read()
{
FILE *f = fopen("deque.in", "r");
fscanf(f, "%d %d", &n, &k);
for(int i = 1; i <= n; i++)
fscanf(f, "%d", &v[i]);
fclose(f);
}
void solve()
{
for(int i = 1; i <= n; i++)
{
if(!D.empty())
while( v[i] <= v[ D.front() ] && !D.empty() )
D.pop_front();
D.push_front(i);
if(D.back() == i - k)
D.pop_back();
if(i >= k)
s += v[ D.back() ];
}
}
void write()
{
FILE *g = fopen("deque.out", "w");
fprintf(g, "%lld\n", s);
fclose(g);
}
int main()
{
read();
solve();
write();
return 0;
}