Example #1
0
    int removeThem(vector<int> a, int K) {
    k=K;
    n=a.size();
    a0.clear();
    a1.clear();
    a2.clear();
    a3.clear();

    for(int i=0;i<a.size();++i)
    {
        if(a[i]%4==0)a0.pb(a[i]);
        if(a[i]%4==1)a1.pb(a[i]);
        if(a[i]%4==2)a2.pb(a[i]);
        if(a[i]%4==3)a3.pb(a[i]);
    }

    sort(a0.rbegin(),a0.rend());
    sort(a1.rbegin(),a1.rend());
    sort(a2.rbegin(),a2.rend());
    sort(a3.rbegin(),a3.rend());

    B[0][0]=a0[0];
    for(int i=1;i<a0.size();++i)
    {
        B[0][i]=B[0][i-1]+a0[i];
    }

    B[1][0]=a1[0];
    for(int i=1;i<a1.size();++i)
    {
        B[1][i]=B[1][i-1]+a1[i];
    }

    B[2][0]=a2[0];
    for(int i=1;i<a2.size();++i)
    {
        B[2][i]=B[2][i-1]+a2[i];
    }

    B[3][0]=a3[0];
    for(int i=1;i<a3.size();++i)
    {
        B[3][i]=B[3][i-1]+a3[i];
    }


    fill(dp,-1);
    return f(0,0,0,0);
    }