Pagini recente » Borderou de evaluare (job #1336706) | Cod sursa (job #1319450) | Borderou de evaluare (job #1277980) | Borderou de evaluare (job #310014) | Cod sursa (job #455309)
Cod sursa(job #455309)
#include <fstream>
#include <deque>
using namespace std;
ifstream fin; ofstream fout;
deque <long> a,b; long n,k,i,x; long long sm=0;
void adauga (long x,long y) {
long i;
for (; a.size ()>0; i--) {
if (*(a.end ()-1)>=y) {a.pop_back (); b.pop_back (); }
if (*(a.end ()-1)<y) break;
}
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<=k-1; i++) {
fin>>x;
adauga (i,x);
}
for (i=k; i<=n; i++) {
fin>>x;
adauga (i,x);
if (b[0]<=i-k) {a.pop_front (); b.pop_front (); }
sm+=a[0];
}
fout<<sm<<endl;
fin.close (); fout.close ();
return 0;
}