Pagini recente » Cod sursa (job #1671577) | Cod sursa (job #3240500) | Cod sursa (job #802886) | Cod sursa (job #2708125) | Cod sursa (job #2239158)
#include <iostream>
#include <fstream>
using namespace std;
int v[5000001], mn[5000001];
ifstream in("deque.in");
ofstream out("deque.out");
int main()
{
int n, k, i, a, g, x;
in >> n >> k;
g = x = 0;
mn[g+1] = 10000001;
mn[g] = -10000001;
for ( i = a = 1; i <= k; i++ ) { // Citesc pana la k
in >> v[i];
while ( v[i] < mn[a] ) { // Creez vectorul cu minime
a--;
}
a++;
mn[a] = v[i];
}
x = mn[g+1];
for ( i = k+1; i <= n; i++ ) {
in >> v[i];
if ( mn[g+1] == v[i-k] ) {
g++;
mn[g] = -10000001;
}
while ( v[i] < mn[a] ) {
a--;
}
a++;
mn[a] = v[i];
x += mn[g+1];
}
out << x;
return 0;
}