Cod sursa(job #1951009)

Utilizator Alex.PAlexandru Pacurar Alex.P Data 3 aprilie 2017 13:14:41
Problema Elimin Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>

using namespace std;

int v[15][7300];
int s[7300];
int alegem[15];

int col, n, m;
long long sol;

void back(int tai, int poz){
    if(tai==0){
        long long suma=0;
        int i,j;
        for(j=0;j<m;j++){
            s[j]=0;
            for(i=0;i<n;i++){
                if(alegem[i]==0)
                    s[j]+=v[i][j];
            }
            suma+=s[j];
        }
        sort(s,s+m);
        for(i=0;i<col;i++){
            suma-=s[i];
        }
        if(suma>sol)
            sol=suma;
    }else   if(poz<n){
        alegem[poz]=1;
        back(tai-1,poz+1);
        alegem[poz]=0;
        back(tai,poz+1);
    }
}

int main()
{
    FILE *fin, *fout;
    fin=fopen("elimin.in","r");
    fout=fopen("elimin.out","w");
    int i,j,tai,aux;
    fscanf(fin,"%d%d%d%d",&n,&m,&tai,&col);
    if(n<=m){
        for(i=0;i<n;i++)
            for(j=0;j<m;j++)
                fscanf(fin,"%d",&v[i][j]);
    }else{
        aux=n;
        n=m;
        m=aux;
        aux=tai;
        tai=col;
        col=aux;
        for(i=0;i<m;i++)
            for(j=0;j<n;j++)
                fscanf(fin,"%d",&v[j][i]);
    }
    back(tai,0);
    fprintf(fout,"%lld",sol);
    fclose(fin);
    fclose(fout);
    return 0;
}