Pagini recente » Cod sursa (job #17790) | Cod sursa (job #2341604) | Cod sursa (job #2381017) | Borderou de evaluare (job #2201042) | Cod sursa (job #455303)
Cod sursa(job #455303)
#include <fstream>
#include <deque>
using namespace std;
ifstream fin; ofstream fout;
deque <long> a,b; long n,k,i; long long sm=0;
long c[5000001];
void adauga (long x,long y) {
long i;
for (i=a.size (); i>0; i--)
if (a[i-1]>y) {a.pop_back (); b.pop_back (); }
a.push_back (y);
b.push_back (x);
}
int main () {
fin.open ("deque.in"); fout.open ("deque.out");
fin>>n>>k;
for (i=1; i<=n; i++) fin>>c[i];
for (i=1; i<=k-1; i++) adauga (i,c[i]);
for (i=k; i<=n; i++) {
adauga (i,c[i]);
if (b[0]<=i-k) {a.pop_front (); b.pop_front (); }
sm+=a[0];
}
fout<<sm<<endl;
fin.close (); fout.close ();
return 0;
}