Pagini recente » Monitorul de evaluare | Cod sursa (job #800391) | Cod sursa (job #759822) | Cod sursa (job #437642) | Cod sursa (job #2543305)
#include <stdio.h>
#include <stdlib.h>
int suma_maxima(int **tabla,int N,int M){
int i,j,*suma_poz_col,*suma_neg_col,*suma_poz_linii,*suma_neg_linii,suma_maxima=0;
suma_poz_linii=calloc(N,sizeof(int));
if(!suma_poz_linii)
return 0;
suma_neg_linii=calloc(N,sizeof(int));
if(!suma_neg_linii)
return 0;
suma_poz_col=calloc(M,sizeof(int));
if(!suma_poz_col)
return 0;
suma_neg_col=calloc(M,sizeof(int));
if(!suma_neg_col)
return 0;
for(i=0;i<N;i++){
for(j=0;j<M;j++){
if(tabla[i][j]<=0){
suma_neg_linii[i]+=tabla[i][j];
suma_neg_col[j]+=tabla[i][j];
}
else{
suma_poz_linii[i]+=tabla[i][j];
suma_poz_col[j]+=tabla[i][j];
}
}
}
for(i=0;i<N;i++){
for(j=0;j<M;j++){
if(((-1)*suma_neg_linii[i])>suma_poz_linii[i]){
tabla[i][j]=(-1)*tabla[i][j];
}
}
}
for(i=0;i<N;i++){
for(j=0;j<M;j++){
if(((-1)*suma_neg_col[j])>suma_poz_col[j]){
tabla[i][j]=(-1)*tabla[i][j];
}
}
}
for(i=0;i<N;i++){
for(j=0;j<M;j++){
suma_maxima+=tabla[i][j];
}
}
free(suma_poz_linii);
free(suma_neg_linii);
free(suma_poz_col);
free(suma_neg_col);
return suma_maxima;
}
int main(){
FILE *input=fopen("flip.in","rt");
if(!input)
return 0;
int N,M,i,**tabla,j;
fscanf(input,"%i %i",&N,&M);
tabla=malloc(N*sizeof(int*));
if(!tabla)
return 0;
for(i=0;i<N;i++){
tabla[i]=malloc(M*sizeof(int));
if(!tabla[i])
return 0;
}
for(i=0;i<N;i++){
for(j=0;j<M;j++){
fscanf(input,"%i",&tabla[i][j]);
}
}
fclose(input);
FILE *output=fopen("flip.out","wt");
if(!output)
return 0;
fprintf(output,"%i\n",suma_maxima(tabla,N,M));
fclose(output);
for(i=0;i<N;i++){
free(tabla[i]);
}
free(tabla);
return 0;
}