Pagini recente » Cod sursa (job #1703647) | Cod sursa (job #119549) | Cod sursa (job #1831932) | Cod sursa (job #2846266) | Cod sursa (job #2636299)
// var STL
//#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
deque <int> deck;
const int NMAX = 5000005;
int v[NMAX], k, n;
ifstream fin("deque.in");
ofstream fout("deque.out");
int main()
{
int i;
long long s=0;
fin >> n >> k;
for(i = 1; i <= n; i++){
fin >> v[i];
while(deck.size() > 0 && v[i] <= v[ deck.back() ])
deck.pop_back();
deck.push_back(i);
if(deck.front() == i - k)
deck.pop_front();
if(i >= k)
s += v[ deck.front() ];
}
fout << s;
return 0;
}
/*
https://infoarena.ro/problema/deque?fbclid=IwAR1bZ_PV-czMzhX5on8pNmMLUkSk00MOZS0Dm0ao2UYciVcGXiZmqW2lLLo
http://www.cplusplus.com/reference/deque/deque/#:~:text=deque%20(usually%20pronounced%20like%20%22deck,its%20front%20or%20its%20back).
*/
// var VECTOR
/*
//#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
const int NMAX = 5000005;
int v[NMAX], deck[NMAX], k, n, fr, bk;
ifstream fin("deque.in");
ofstream fout("deque.out");
int main()
{
int i;
long long s=0;
fin >> n >> k;
for(i = 1; i <= n; i++){
fin >> v[i];
}
bk = 0; fr = 1;
for(i = 1; i <= n; i++){
while(v[i] <= v[ deck[bk] ] && fr <= bk)
bk--;
deck[++bk] = i;
if(deck[fr] == i - k)
fr++;
if(i >= k)
s += v[ deck[fr] ];
}
fout << s;
return 0;
}
*/