Pagini recente » Cod sursa (job #2813304) | Cod sursa (job #3248362) | Cod sursa (job #2532365) | Cod sursa (job #356839) | Cod sursa (job #461693)
Cod sursa(job #461693)
#include <fstream>
#define DM 5000010
using namespace std;
int a[DM],n,k,deque[DM];
class coada {
public:
int inc,sfc;
void adaugare (int);
inline void sterge () { ++inc; }
inline void init() { inc=1; sfc=0; }
};
inline void coada::adaugare(int x) {
deque[++sfc]=x;
}
int main()
{
long long suma=0;
int i;
coada c;
ifstream f("deque.in");
ofstream g("deque.out");
f>>n>>k;
for(i=1; i<=n; i++) f>>a[i];
c.init();
for(i=1; i<=n; i++) {
while (c.inc<=c.sfc && a[i]<a[deque[c.sfc]]) --c.sfc;
c.adaugare(i);
if(deque[c.inc]==i-k) c.sterge();
if(i>=k) suma+=a[deque[c.inc]];
}
g<<suma;
return 0;
}