Cod sursa(job #10729)

Utilizator bacerandreiBacer Andrei bacerandrei Data 29 ianuarie 2007 08:38:57
Problema Elimin Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<fstream.h>
#define max 100
int a[max][max],m,n,r,c,i,j,s,t,u,min,poz;
void eliml(int l)
{
  int i,j;
  for(i=l+1;i<=m;i++)
   for(j=1;j<=n;j++)
    a[i-1][j]=a[i][j];
  for(j=1;j<=n;j++)
   a[m][j]=0;
  --m;
}
void elimc(int c)
{
 int i,j;
  for(i=1;i<=m;i++)
   for(j=c+1;j<=n;j++)
    a[i][j-1]=a[i][j];
   for(i=1;i<=m;i++)
    a[i][n]=0;
   --n;
}
int sumal(int b)
{
  int i,s=0;
   for(i=1;i<=n;i++)
    s=s+a[b][i];
  return s;
}
int sumac(int d)
{
  int i,s1=0;
   for(i=1;i<=m;i++)
    s1=s1+a[i][d];
  return s1;
}
int main()
{
  ifstream f("elimin.in");
  ofstream g("elimin.out");
   f>>m>>n>>r>>c;
  for(i=1;i<=m;i++)
   for(j=1;j<=n;j++)
    f>>a[i][j];
    for(t=1;t<=r;t++)
   {
    min=sumal(1);
    poz=1;
     for(i=2;i<=m;i++)
      if(sumal(i)<min)
       {
	min=sumal(i);
	poz=i;
       }
      eliml(poz);
    }
   for(u=1;u<=c;u++)
    {
     min=sumac(1);
     poz=1;
       for(j=2;j<=n;j++)
	if(sumac(j)<min)
	 {
	  min=sumac(j);
	  poz=j;
	 }
       elimc(poz);
    }
   for(i=1;i<=m;i++)
    for(j=1;j<=n;j++)
     s=s+a[i][j];
    g<<s;
  return 0;
}