Cod sursa(job #7487)

Utilizator kyrk_ddDragos Dumitrescu kyrk_dd Data 21 ianuarie 2007 16:12:41
Problema Elimin Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
#include<iostream.h>
#include<fstream.h>
main()
{
long int a[1000][1000],i,j,r,c,s,n,m,t,min,aux;
long long k,x[1000][5];
fstream f("elimin.in",ios::in);
fstream g("elimin.out",ios::out);
f>>m; f>>n;
f>>r; f>>c;
for(i=1;i<=m;i++)
 for(j=1;j<=n;j++)
  f>>a[i][j];
i=1;
do{
   k=0;
   for(j=1;j<=n;j++)
     k+=a[i][j];
   x[i][0]=k;
   x[i][1]=0;
   x[i][2]=i;
   x[i][3]=1;
   i++;
   }while(i<=m);
j=1;
do{
   k=0;
   for(t=1;t<=m;t++)
     k+=a[t][j];
   x[i][0]=k;
   x[i][1]=1;
   x[i][2]=j;
   x[i][3]=1;
   i++;
   j++;
   }while(j<=n);


int d1,d2,d0;
int valid,con=0,alt,del;
do{ alt=1;del=0;
    do{
       if(x[alt][3]==1)
	 {min=x[alt][0];d1=x[alt][1];d2=x[alt][2];del=1; }
       else alt++;
       }while(del==0);

    i=2;
    valid=0;
    do{
       if((x[i][0]<min)&&(x[i][3]!=0))
	 { min=x[i][0];
	   d1=x[i][1];  d2=x[i][2];  d0=i; }
       i++;
      }while(i<=(m+n));
    x[d0][3]=0;
    if((d1==1)&&(c>=1))
       {  c--;i=1;
	  do{ x[i][0]-=a[i][d2]; a[i][d2]=-99;
		 i++;
	     }while(i<=m);
       }
    if((d1==0)&&(r>=1))
       {  r--;j=1;
	  do{ x[m+j][0]-=a[d2][j];a[d2][j]=-99;
		 j++;
	     }while(j<=n);
	}
    if((c==0)&&(r==0))valid=1;
   }while(valid==0);
long long rez;
rez=0;
i=1;
do{
   if((x[i][0]!=-99)&&(x[i][3]!=0))rez+=x[i][0];
   i++;
   }while(i<=m);
g<<rez;

return 0;
}