Cod sursa(job #1547291)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 9 decembrie 2015 11:01:04
Problema Elimin Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
#include <algorithm>
#define FOR(a,b,c) for(int a=b; a<=c; ++a)
using namespace std;
ifstream f("elimin.in");
ofstream g("elimin.out");
int n, m, v[50][550], x, y, X, a[550], maxim, st;

int biti(int x){
    int nr=0;
    while(x>0)
    {
        if(x&1==1)
            nr++;
        x>>=1;
    }
    return nr;
}

int main(){
    f>>n>>m>>x>>y;
    if(n>m)
    {
        X=n;
        n=m;
        m=X;
        FOR(j,1,m)
            FOR(i,1,n)
                f>>v[i][j];
        X=x;
        x=y;
        y=X;
    }
    else
       FOR(i,1,n)
            FOR(j,1,m)
                f>>v[i][j];
    X=(1<<n)-1;
    FOR(num,0,X)
    {
        if(biti(num)==x)
        {
            st=0;
            FOR(j,1,m)
                a[j]=0;
            FOR(i,1,n)
                if( ( (num>>(i-1))&1 )==0 )
                    FOR(j,1,m)
                        a[j]+=v[i][j], st+=v[i][j];
            sort(a+1, a+m+1);
            FOR(j,1,y)
                st-=a[j];
            if(st>maxim)
                maxim=st;
        }
    }
    g<<maxim<<"\n";
    return 0;
}