Cod sursa(job #1072286)

Utilizator gapdanPopescu George gapdan Data 4 ianuarie 2014 12:10:03
Problema Elimin Scor 40
Compilator cpp Status done
Runda 4_ian_2014 Marime 1.09 kb
#include <fstream>
#include <algorithm>
using namespace std;
int i, j, M, N, R, C;
int ANS;
int Sum[700];
int a[700][700];
bool s[700];
void solve()
{
   for (int j=0;j<=N;++j) Sum[j]=0;
    int c, l;
    for (c=1;c<=M;++c)
    {
        if (!s[c])
            for (l=1;l<=N;++l) Sum[l]+=a[l][c];
    }
    sort(Sum+1,Sum+N+1);
    int cnt=0;
    for (l=R+1;l<=N;++l) cnt+=Sum[l];
    if (cnt>ANS) ANS=cnt;
}
void back(int k)
{
    if (k==C+1) solve();
    else
    {
        for (int i=1;i<=M;++i)
        {
            if (!s[i])
            {
                s[i]=true;
                back(k+1);
                s[i]=false;
            }
        }
    }
}
int main()
{
    ifstream f("elimin.in");
    ofstream g("elimin.out");
    f>>N>>M>>R>>C;
    if (N>M)
    {
        for (i=1;i<=N;++i)
            for (j=1;j<=M;++j)
                f>>a[i][j];
    }
    else
    {
        for (j=1;j<=N;++j)
            for (i=1;i<=M;++i)
                f>>a[i][j];
        swap(N, M);
        swap(R, C);
    }
    back(1);
    g<<ANS<<'\n';
    return 0;
}