Pagini recente » Cod sursa (job #1191170) | Cod sursa (job #458832) | Cod sursa (job #3147015) | Cod sursa (job #2951288) | Cod sursa (job #1045482)
#include <fstream>
using namespace std;
int a[5000002], poz[5000002], n, k;
int main()
{
int i, pr, ul, x;
long long suma;
ifstream fin("deque.in");
fin >> n >> k;
pr = 0; ul = -1;
for (i = 1; i <= k; ++i)
{
fin >> x;
while (pr <= ul && x < a[ul]) ul--;
a[++ul] = x;
poz[ul] = i;
}
suma = a[pr];
//cout << a[pr] << " " << poz[pr] << "\n";
for (i = k + 1; i <= n; ++i)
{
fin >> x;
while (pr <= ul && x < a[ul]) ul--;
a[++ul] = x;
poz[ul] = i;
while (poz[ul] - k >= poz[pr]) ++pr;
suma += a[pr];
//cout << a[pr] << " " << poz[pr] << "\n";
}
fin.close();
ofstream fout("deque.out");
fout << suma << "\n";
fout.close();
return 0;
}