Cod sursa(job #118700)

Utilizator katakunaCazacu Alexandru katakuna Data 27 decembrie 2007 16:55:16
Problema Elimin Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
//0001

#include<stdio.h>
int nr,i,j,c,n,i2,s,j2,r,m,k,l,max;
int v[100],v2[100],a[20][20],b[20][20];

int main(){

FILE *f=fopen("elimin.in","r");


fscanf(f,"%d%d%d%d",&n,&m,&r,&c);


for(i=1;i<=n;i++){

 for(j=1;j<=m;j++){
 fscanf(f,"%d",&a[i][j]);
 }

}
fclose(f);


 for(i=0;i<=(1<<n)-1;i++){
 nr=0;

   for(j=n-1;j>=0;j--){

    v[j+1]=(i>>j)&1;

    if(v[j+1]==1)nr++;

   }

    if(nr==r){

	for(i2=0;i2<=(1<<m)-1;i2++){
	nr=0;

	  for(j2=m-1;j2>=0;j2--){

	  v2[j2+1]=(i2>>j2)&1;

	  if(v2[j2+1]==1)nr++;

	  }

	     if(nr==c){


		for(k=1;k<=n;k++){
		  if(v[k]==1){

		     for(l=1;l<=m;l++){
		     b[k][l]=0;
		     }

		  }

		  else
		  for(l=1;l<=m;l++){
		  b[k][l]=a[k][l];
                  }

		}

                s=0;
		for(l=1;l<=m;l++){
		  if(v2[l]==1){

		      for(k=1;k<=n;k++){
		      b[k][l]=0;

		      }
		  }
		  else
		  for(k=1;k<=n;k++){
		  //b[k][l]=b[k][l];
		  s+=b[k][l];
		  }

		}

	     if(s>max)max=s;

	     }


	 }

    }

 }

 FILE *g=fopen("elimin.out","w");


 fprintf(g,"%d\n",max);

 fclose(g);

return 0;
}