Pagini recente » Cod sursa (job #1147805) | Cod sursa (job #1810680) | Cod sursa (job #2489899) | Cod sursa (job #1498176) | Cod sursa (job #461691)
Cod sursa(job #461691)
#include <fstream>
#define DM 5000010
using namespace std;
int a[DM],n,k;
class coada {
public:
int inc,sfc,deque[2000000];
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[c.deque[c.sfc]]) --c.sfc;
c.adaugare(i);
if(c.deque[c.inc]==i-k) c.sterge();
if(i>=k) suma+=a[c.deque[c.inc]];
}
g<<suma;
return 0;
}