Cod sursa(job #1081507)

Utilizator BuseSorinFMI Buse Sorin-Marian BuseSorin Data 13 ianuarie 2014 18:13:53
Problema Elimin Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>
#include <algorithm>

using namespace std;
int v[20],a[20][8000],b[8000][20], n, m, l ,c;
int sol;
 
void Solve()
{
    int i,sum = 0,j ,k = 1;
    int s[8000];
    memset(s,0,sizeof(s));
    for(i = 1;i <= n; ++i)
        if(k <= l && i == v[k])
            ++k;
        else
        {
            for(j = 1;j <= m; ++j)
                s[j] += a[i][j];
        }
    sort(s+1,s+m+1);
    for(i = c+1; i<= m; ++i)
        sum += s[i];
    sol = max(sol,sum);
}
 
void Back(int k)
{
    if(k==l+1)
    {
        Solve();
        return ;
    }
    for(int i=v[k-1]+1;i <= n;++i)
    {
        v[k] = i;
        Back(k+1);
    }
}
 
 
int main()
{
    ifstream f("elimin.in");
    f>> n >> m >> l >> c;
    if(n <= m)
    {
        for(int i = 1;i <= n; ++i)
            for(int j = 1 ;j <= m; ++j)
                f>>a[i][j];
    }
    else
    {
        for(int i = 1;i <= n; ++i)
            for(int j = 1 ;j <= m; ++j)
                f>>b[i][j];
        for(int i = 1;i <= n; ++i)
            for(int j = 1;j <= m; ++j)
                a[j][i] = b[i][j];
        swap(n,m);
        swap(l,c);
    }
    Back(1);
    ofstream g("elimin.out");
    g<<sol<<"\n";

    return 0;
}