Pagini recente » Cod sursa (job #2316644) | Cod sursa (job #3292150) | Cod sursa (job #2060470) | Cod sursa (job #1470293) | Cod sursa (job #508099)
Cod sursa(job #508099)
#include<fstream>
#include<deque>
using namespace std;
struct pai
{
int val;
int poz;
};
deque<pai> d;
void insertdeque(pai v)
{
int i;
for(i=d.size()-1; i>=0; --i)
if(d[i].val > v.val)
d.pop_back();
d.push_back(v);
}
int getmin(int p)
{
int i;
for(i=0; i<=d.size()-1; ++i)
if(d[i].poz < p)
d.pop_front();
return d[0].val;
}
int main()
{
pai p;
int n, k, i, v[5000001];
long long sum=0;
ifstream f("deque.in");
ofstream g("deque.out");
f>>n>>k;
for(i=1; i<=n; ++i)
f>>v[i];
for(i=1; i<=k-1; ++i)
{
p.poz = i;
p.val = v[i];
insertdeque(p);
}
for(i=k; i<=n; ++i)
{
p.poz = i;
p.val = v[i];
insertdeque(p);
sum+=getmin(i-k+1);
}
g<<sum<<'\n';
g.close();
return 0;
}