Pagini recente » Borderou de evaluare (job #2912104) | Borderou de evaluare (job #2002080) | Cod sursa (job #2121603) | Borderou de evaluare (job #2002079) | Cod sursa (job #2887723)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int main() {
long long n,k,i,x;
f>>n>>k;
i = 0;
long long *v = new long long [n+1];
long long *d = new long long [n+1];
long long suma = 0;
while (f>>x)
{
v[i] = x;
i++;
}
long long spate = 0;
long long fata = 0;
long long size = 0;
int nr = 0;
for(i = 0;i<n;i++)
{
while (size > 0 && v[i]<=v[d[spate]])
{
spate--;
size --;
}
if(nr == 0) {
d[spate] = i;
nr = 1;
}
else
d[++spate] = i;
if(i>=k-1)
suma += v[d[fata]];
if(d[fata]==i-k+1)
fata++;
size = spate - fata+1;
}
g<<suma;
delete[] d;delete[] v;
f.close();g.close();
return 0;
}