Pagini recente » Cod sursa (job #1231596) | Cod sursa (job #498211) | Cod sursa (job #2957490) | Cod sursa (job #3279307) | Cod sursa (job #580587)
Cod sursa(job #580587)
#include <cstdio>
#include <deque>
#define LIM 5000005
using namespace std;
FILE *f=fopen("deque.in", "r"), *g=fopen("deque.out", "w");
long long n, k, i, s[LIM], suma;
deque <int> v;
inline void deckit(long long kzk)
{
while(!v.empty()&&s[v.back()]>=s[kzk])
v.pop_back();
v.push_back(kzk);
}
inline void citeste()
{
fscanf(f, "%lld%lld", &n, &k);
for (i=1;i<=n;i++)
fscanf(f, "%lld", &s[i]);
}
inline void decuieste()
{
for (i=1;i<=k;i++)
deckit(i);
for (i=k;i<=n;i++)
{
if (v.front()<=i-k)
v.pop_front();
deckit(i);
suma+=s[v.front()];
}
}
int main()
{
citeste();
decuieste();
fprintf(g, "%lld", suma);
fclose(f);
fclose(g);
return 0;
}