Cod sursa(job #2218630)

Utilizator ptudortudor P ptudor Data 5 iulie 2018 11:11:59
Problema Elimin Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
int n,m,r,c;
priority_queue <int> q;
int M[1000][1000];
int st[1000];
int v[1000];
int Max=0;
void Check()
{
    int i,j;
    int s=0;
    for (i=1;i<=n;i++)
        v[i]=0;
    for (i=1;i<=r;i++)
    {
        v[st[i]]=1;
    }
    for (j=1;j<=m;j++)
    {
        s=0;
        for (i=1;i<=n;i++)
        {
        if (v[i]==0)
            s+=M[i][j];
        }
        q.push(s*-1);
    }
    for (i=1;i<=c;i++)
        q.pop();
    s=0;
    while (!q.empty())
    {
        s+=q.top()*-1;
        q.pop();
    }
if (s>Max)
    Max=s;
}

void Back(int i)
{
    if (i>r)
    {
        Check();
    }
    else
    {
        for (int j=st[i-1]+1;j<=n-(r-i);j++)
        {
            st[i]=j;
            Back(i+1);
        }
    }
}
int main()
{
    ifstream in("elimin.in");
    ofstream out("elimin.out");
    in>>n>>m>>r>>c;
    int i,j;
    for (i=1;i<=n;i++)
    {
        for (j=1;j<=m;j++)
            in>>M[i][j];
    }
    Back(1);
out<<Max<<"\n";
out.close();
in.close();
return 0;
}