Cod sursa(job #721776)

Utilizator algotrollNume Fals algotroll Data 24 martie 2012 09:26:19
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#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;
}