Pagini recente » Cod sursa (job #2098793) | Cod sursa (job #1770314) | Cod sursa (job #2924013) | Cod sursa (job #2571597) | Cod sursa (job #1316280)
#include <fstream>
using namespace std;
ifstream fin ("deque.in");
ofstream fout("deque.out");
int v[5000010]; // numerele de la intrare
int d[5000010]; // indici din v
long long sol;
int n, k, i, p, u;
int main() {
fin>>n>>k;
u = 0;
p = 1;
// la un pas in d vor fi elemente candidat pentru secventa de lungime k ce se terminate
// pe pozitia i dar si cele ce sunt candidat pentru urmatoarele secvente de lg k
for (i=1;i<=n;i++) {
fin>>v[i];
// elementul curent scoate
while (p<=u && v[i] < v[ d[u] ])
u--;
d[++u] = i;
if (i-d[p] == k)
p++;
if (i >= k) {
sol += v[ d[p] ];
}
}
fout<<sol<<"\n";
return 0;
}