Cod sursa(job #7369)

Utilizator TheoTheodor Iacomi Theo Data 21 ianuarie 2007 13:38:16
Problema Elimin Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.59 kb
#include<fstream.h>
ifstream f("elimin.in");
ofstream g("elimin.out");
long cl[101][2],l[101][2];
int main(){
 long n,m,r,c,v[101][101],i,j,aux,aux1,nr=0,nc=0,s1,s2,s=0;
 f>>n>>m>>r>>c;
 for(i=1;i<=n;i++) l[i][1]=i;
 for(j=1;j<=m;j++)cl[j][1]=j;
 for(i=1;i<=n;i++)
  for(j=1;j<=m;j++){
    f>>v[i][j];l[i][0]=l[i][0]+v[i][j];cl[j][0]=cl[j][0]+v[i][j];s=s+v[i][j];}
 while((nr!=r) || (nc!=c)){
 if(n>=m && nr!=r){
 for(i=1;i<n;i++)
  for(j=i+1;j<=n;j++) if(l[i][0]>l[j][0]) {aux=l[i][0];aux1=l[i][1];
					 l[i][0]=l[j][0];l[i][1]=l[j][1];
					 l[j][0]=aux;l[j][1]=aux1;}
	       else if(l[i][0]==l[j][0])
		    if(s-l[i][0]>s-l[j][0]){aux=l[i][0];aux1=l[i][1];
					 l[i][0]=l[j][0];l[i][1]=l[j][1];
					 l[j][0]=aux;l[j][1]=aux1;}
 i=1;
 while(l[i][0]==0) i++;
 s=s-l[i][0];l[i][0]=0;nr++;
 for(j=1;j<=m;j++)v[l[i][1]][j]=0;
 for(j=1;j<=m;j++)cl[j][0]=0;
 for(j=1;j<=m;j++)cl[j][1]=j;
 for(i=1;i<=n;i++)
  for(j=1;j<=m;j++){
    cl[j][0]=cl[j][0]+v[i][j];}
 }else{
 for(i=1;i<m;i++)
  for(j=i+1;j<=m;j++) if(cl[i][0]>cl[j][0]) {aux=cl[i][0];aux1=cl[i][1];
					 cl[i][0]=cl[j][0];cl[i][1]=cl[j][1];
					 cl[j][0]=aux;cl[j][1]=aux1;}
	       else if(cl[i][0]==cl[j][0])
		    if(s-cl[i][0]>s-cl[j][0]){aux=cl[i][0];aux1=cl[i][1];
					 cl[i][0]=cl[j][0];cl[i][1]=cl[j][1];
					 cl[j][0]=aux;cl[j][1]=aux1;}
 i=1;
 while(cl[i][0]==0) i++;
 s=s-cl[i][0];cl[i][0]=0;nc++;
 for(j=1;j<=n;j++)v[j][cl[i][1]]=0;
 for(i=1;i<=n;i++)l[i][0]=0;
 for(i=1;i<=n;i++)l[i][1]=i;
 for(i=1;i<=n;i++)
  for(j=1;j<=m;j++){
    l[i][0]=l[i][0]+v[i][j];}
 }}
 g<<s;
 f.close();g.close();return 0;}