Pagini recente » Cod sursa (job #1189189) | Cod sursa (job #291380) | Cod sursa (job #2932617) | Cod sursa (job #561383) | Cod sursa (job #474782)
Cod sursa(job #474782)
#include<fstream>
#include<deque>
#include<iostream>
using namespace std;
int N,K;
long long S;
deque<pair<int,int> > Q;
void citire()
{
ifstream fin("deque.in");
ofstream fout("deque.out");
fin>>N>>K;
int x;
for(int i=1;i<=N;i++)
{
fin>>x;
deque<pair <int,int> > ::iterator itr;
if(!Q.empty())
{
itr=Q.end();
itr--;
while(itr->first > x && !Q.empty())
{
Q.pop_back();
itr--;
}
}
Q.push_back(make_pair(x,i));
itr=Q.begin();
if(i - itr->second >= K)
{
Q.pop_front();
itr++;
}
if(i>=K) S+=itr->first;
}
fout<<S<<"\n";
fin.close();
fout.close();
}
int main(int argc, char *argv[])
{
citire();
}