Cod sursa(job #1010112)

Utilizator Dddarius95Darius-Florentin Neatu Dddarius95 Data 14 octombrie 2013 11:52:33
Problema Elimin Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
#include <algorithm>
#include <string.h>
#define Mmax 7305
#define Nmax 17
using namespace std;
ifstream f("elimin.in");
ofstream g("elimin.out");

int N,M,R,C,a[Mmax][Nmax],st[Nmax],used[Nmax],S,Slin[Mmax],sum[Mmax];;

inline void ReadInput()
{
    f>>M>>N>>R>>C;
    if(M>=N)
    {
        for(int i=1;i<=M;++i)
            for(int j=1;j<=N;++j)f>>a[i][j],Slin[i]+=a[i][j];
    }
    else
    {
        for(int i=1;i<=M;++i)
            for(int j=1;j<=N;++j)f>>a[j][i],Slin[j]+=a[j][i];
        swap(M,N);
        swap(R,C);
    }
}

inline void Print(int st[])
{
    for(int i=1;i<=M;++i)
    {
        sum[i]=Slin[i];
        for(int j=1;j<=C;++j)sum[i]-=a[i][st[j]];
    }
    sort(sum+1,sum+1+M);
    int sol=0;
    for(int i=R+1;i<=M;++i)sol+=sum[i];
    if(sol>S)S=sol;

}
void Back(int k)
{
    if(k==C+1){Print(st);return;}
    for(int i=st[k-1]+1;i<=N;++i)
        {
            st[k]=i;
            Back(k+1);
        }
}
int main()
{
    ReadInput();
    Back(1);
    g<<S<<'\n';
    f.close();g.close();
    return 0;
}