Pagini recente » Monitorul de evaluare | Cod sursa (job #1556866) | Cod sursa (job #2001821) | Cod sursa (job #1254525) | Cod sursa (job #721776)
Cod sursa(job #721776)
#include<fstream>
#include<map>
#define _NM 5000010
using namespace std;
void myinsert(map<int,int> &M, int x)
{
map<int,int>::iterator it=M.find(x);
if (it!=M.end()) it->second++;
else M.insert(pair<int,int>(x,1));
}
void myerase(map<int,int> &M, int x)
{
map<int,int>::iterator it=M.find(x);
if (it->second==1) M.erase(x);
else it->second--;
}
int main()
{
ifstream fin("deque.in");
ofstream fout("deque.out");
int nA,k; static int A[_NM];
fin>>nA>>k;
map<int,int> ssq;
long long sum=0;
for (int i=1;i<=nA;i++)
{
fin>>A[i];
if (i<=k)
{
myinsert(ssq,A[i]);
if (i==k) sum+=ssq.begin()->first;
continue;
}
myinsert(ssq,A[i]);
myerase(ssq,A[i-k]);
sum+=ssq.begin()->first;
}
fout<<sum;
return 0;
}