Cod sursa(job #2398564)

Utilizator Vaida_Radu_AndreiVaida Radu Andrei Vaida_Radu_Andrei Data 5 aprilie 2019 18:50:34
Problema Elimin Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <cstdio>
#include <algorithm>
FILE* FIN=freopen("elimin.in","r",stdin);
FILE* FOUT=freopen("elimin.out","w",stdout);
using namespace std;

int n,m,r,c,sol,ar[16][525],sc[525];
char v[17];

void sw(int&x,int&y)
{
    x+=y;
    y=x-y;
    x-=y;
}
void takemx(int&x,int y)
{
    x=(x>y)*(x-y)+y;
}
void cit()
{
    int i,j;
    scanf("%d%d%d%d",&n,&m,&r,&c);
    if(n>m)
    {
        sw(n,m);
        sw(r,c);
    }
    for(i=0,j=n*m;i<j;i++)
        scanf("%d",&ar[i/m][i%m]);
}
int slv()
{
    int i,j,sl;
    for(i=0;i<m;i++)
        sc[i]=0;
    for(i=0;i<n;i++)
        if(!v[i])
            for(j=0;j<m;j++)
                sc[j]+=ar[i][j];
    sort(sc,sc+m);
    for(i=c,sl=0;i<m;i++)
        sl+=sc[i];
    return sl;
}
void backtrack(int w,int p)
{
    if(w==r)
    {
        takemx(sol,slv());
        return;
    }
    int i;
    for(i=p;i<n;i++)
    {
        v[i]++;
        backtrack(w+1,i+1);
        v[i]--;
    }
}
void af()
{
    printf("%d",sol);
}
int main()
{
    cit();
    backtrack(0,0);
    af();
    return 0;
}