Cod sursa(job #77102)

Utilizator coderninuHasna Robert coderninu Data 13 august 2007 00:58:17
Problema Elimin Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <stdio.h>
#define infile "elimin.in"
#define outfile "elimin.out"
#define nmax 300
#define inf 999999999
int v[nmax][nmax], n, m, r, c, i, j;
long rez, linii[nmax], coloane[nmax];

void readdata();
void writedata();
void solve();

int main()
{
 readdata();
 solve();
 writedata();
 return 0;
}

void readdata()
{
 freopen(infile, "r", stdin);
 scanf("%d %d %d %d\n", &n, &m, &r, &c);
 for (i=1; i<=n; i++)
     for (j=1; j<=m; j++)
	 {
	  scanf("%d ", &v[i][j]);  
	  rez+=v[i][j];
	  linii[i]+=v[i][j];
	  coloane[j]+=v[i][j];
	 }
 fclose(stdin);
}

void writedata()
{
 freopen(outfile, "w", stdout);
 printf("%ld", rez);
 fclose(stdout);
}

void solve()
{
 long min, ln;
 for (i=0; i<r; i++)
     {
      min=inf;
      for (j=1; j<=n; j++)
	  if (linii[j]<min)
	      {
	       min=linii[j];
	       ln=j;
	      }
      rez-=linii[ln];
      linii[ln]=inf;
      for (j=1; j<=m; j++) coloane[j]-=v[ln][j];
     }
 for (i=0; i<c; i++)
     {
      min=inf;
      for (j=1; j<=m; j++)
	  if (coloane[j]<min)
	      {
	       min=coloane[j];
	       ln=j;
	      }
      rez-=coloane[ln];
      coloane[j]=inf;
      for (j=1; j<=n; j++) linii[j]-=v[j][ln];
     }
}