Cod sursa(job #1940802)

Utilizator adriannicolaeAdrian Nicolae adriannicolae Data 26 martie 2017 20:19:39
Problema Elimin Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
int a[7500][30],r,c,st[7500],sol[7500],col[7500],smax,n,m;
void Citire()
{
    int i,j;
    fin>>n>>m>>r>>c;
    if(n<=m)
    {
        for(i=1;i<=n;i++)
            for(j=1;j<=m;j++)
                fin>>a[j][i];
        swap(n,m);
        swap(c,r);
    }
    else
    {
        for(i=1;i<=n;i++)
            for(j=1;j<=m;j++)
                fin>>a[i][j];
    }
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            col[i]+=a[i][j];
}
void Sum()
{
    int i,j,s=0;
    for(i=1;i<=n;i++)
    {
        sol[i]=col[i];
        for(j=1;j<=c;j++)
            sol[i]-=a[i][st[j]];
    }
    sort(sol+1,sol+n+1);
    for(i=r+1;i<=n;i++)
        s+=sol[i];
    smax=max(smax,s);
}
void Back(int top)
{
    int i;
    if(top==c+1)
        Sum();
    else
    {
        for(i=st[top-1]+1;i<=m;i++)
        {
            st[top]=i;
            Back(top+1);
        }
    }
}
int main()
{
    Citire();
    Back(1);
    fout<<smax<<"\n";
    return 0;
}