Cod sursa(job #1487927)

Utilizator aaron72Armand Ioan Anusca Popa aaron72 Data 17 septembrie 2015 17:21:26
Problema Elimin Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.59 kb
#include <bits/sdtc++.h>
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
 
int suma_matrice,s_linie[7300],s_coloana[20];
int i,j,n,m,r,c,a[7300][20];
int suma_coloane,suma_linii;
int q,nr,nr_col,sol;
 
int main(){
    fin>>n>>m>>r>>c;
    if(n>m){
            for(i=1;i<=n;i++)
              for(j=1;j<=m;j++) fin>>a[i][j];
           }
    else{
         for(i=1;i<=n;i++)
           for(j=1;j<=m;j++) fin>>a[j][i];
          
         swap(n,m);
         swap(r,c);
        }
     
    suma_matrice=0;
    for(i=1;i<=n;i++)
      for(j=1;j<=m;j++)
         {
          suma_matrice+=a[i][j];
          s_coloana[j]+=a[i][j];
         }
     
    nr=(1<<m);
    for(q=0;q<nr;q++)
       {
        nr_col=0; 
        for(j=0;j<m;j++)
          if(q&(1<<j)) nr_col++;
           
        if(nr_col==c){
                      suma_coloane=0; suma_linii=0;
                      for(i=1;i<=n;i++) s_linie[i]=0;
                       
                      for(i=1;i<=n;i++)
                        for(j=1;j<=m;j++)
                          if(q&(1<<(j-1))) suma_coloane+=a[i][j];
                          else s_linie[i]+=a[i][j];
                            
                      sort(s_linie+1,s_linie+n+1);
                      for(i=1;i<=r;i++) suma_linii+=s_linie[i];
                       
                      if(suma_matrice-suma_coloane-suma_linii>sol)
                        sol=suma_matrice-suma_coloane-suma_linii;
                     }
       } 
     
    fout<<sol;
     
    fin.close();
    fout.close();
    return 0;
}