Cod sursa(job #6921)

Utilizator undogSavu Victor Gabriel undog Data 21 ianuarie 2007 10:52:34
Problema Elimin Scor 10
Compilator cpp Status done
Runda preONI 2007, Runda 1, Clasa a 10-a Marime 1.14 kb
#include<stdio.h>


main(){

FILE *in=fopen("elimin.in","rt"),*out=fopen("elimin.out","w+");
int m,n,r,c,i,j,a[100][100],tmp,re=0;
long s=0;;

fscanf(in,"%d %d %d %d",&m,&n,&r,&c);

for(i=0;i<m;i++)
 for(j=0;j<n;j++)
  fscanf(in,"%d",&a[i][j]);

for(j=0;j<n;j++){
 for(i=0;i<m;i++)
  s=s+a[i][j];
 a[m+1][j]=s;s=0;a[m+2][j]=j;
}

re=0;
while(re==0){
re=1;
for(j=1;j<n;j++){
 if(a[m+1][j-1]>a[m+1][j]){
  re=0;
  tmp=a[m+1][j-1];
  a[m+1][j-1]=a[m+1][j];
  a[m+1][j]=tmp;
  tmp=a[m+2][j-1];
  a[m+2][j-1]=a[m+2][j];
  a[m+2][j]=tmp;
  re=0;
 }
}
}
for(j=0;j<c;j++){
 for(i=0;i<m;i++){
 tmp=a[m+2][j];
  a[i][tmp]=0;
}
}

for(i=0;i<m;i++){
 for(j=0;j<n;j++)
  s=s+a[i][j];
 a[i][n+1]=s;s=0;a[i][n+2]=i;
}

re=0;
while(re==0){
re=1;
for(i=1;i<m;i++){
 if(a[i-1][n+1]>a[i][n+1]){
  re=0;
  tmp=a[i-1][n+1];
  a[i-1][n+1]=a[i][n+1];
  a[i][n+1]=tmp;
  tmp=a[i-1][n+2];
  a[i-1][n+2]=a[i][n+2];
  a[i][n+2]=tmp;
  re=0;
 }
}
}
for(i=0;i<r;i++){
 for(j=0;j<n;j++){
 tmp=a[i][n+2];
  a[tmp][j]=0;
}
}

s=0;
for(i=0;i<m;i++)
 for(j=0;j<n;j++)
  s=s+a[i][j];




fprintf(out,"%ld",s);

return 0;
}