Cod sursa(job #6953)

Utilizator kyrk_ddDragos Dumitrescu kyrk_dd Data 21 ianuarie 2007 11:08:14
Problema Elimin Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 1, Clasa a 10-a Marime 1.64 kb
#include<iostream.h>
#include<fstream.h>
main()
{
long int a[100][100],i,j,r,c,s,n,m,t,min,aux;
long long k,x[100][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);
cout<<endl<<"START"<<endl<<endl;
for(i=1;i<=(m+n);i++)
 cout<<x[i][0]<<" "<<x[i][1]<<" "<<x[i][2]<<endl;


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;
    cout<<endl<<min<<" "<<d1<<" "<<d2<<endl;
    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;
    cout<<endl<<endl;
    for(i=1;i<=m;i++)
     { cout<<endl;
       for(j=1;j<=n;j++)
	cout<<a[i][j]<<" ";
     }
    for(i=1;i<=(m+n);i++)
     {cout<<endl;
      for(j=0;j<=3;j++)
       cout<<x[i][j]<<" ";
     }
   con++;
  }while(valid==0);



return 0;
}