Pagini recente » Cod sursa (job #1486990) | Cod sursa (job #2885351) | Cod sursa (job #2368246) | Cod sursa (job #1386590) | Cod sursa (job #1907487)
#include <fstream>
#include <deque>
using namespace std;
ifstream f ("deque.in");
ofstream g ("deque.out");
int v[5000001],i,n,k;
long long s;
deque <int> d; //coada dubla
int main()
{
f>>n>>k; //citire
for(i=1;i<=n;++i) f>>v[i];
for(i=1;i<=n;++i)
{
while(!d.empty()&&v[i]<=v[d[d.size()-1]]) d.pop_back(); //daca elementul la care am ajuns e mai mic sau egal decat precedentele
//le eliminam, chiar pana golim dubla coada
d.push_back(i); //adaugam elementul actual
if(d[0]==i-k) d.pop_front(); //daca avem k+1 elemente
if(i>=k) s+=v[d[0]]; //daca avem k elemente
}
g<<s;
return 0;
}