Pagini recente » Cod sursa (job #857189) | Cod sursa (job #3042001) | Cod sursa (job #2314993) | Cod sursa (job #1210768) | Cod sursa (job #408445)
Cod sursa(job #408445)
#include<stdio.h>
int search_for_min(int N, int M, long v[16], long w[16], long *min1, long *min2){
int i,j,t1,t2;
*min1=v[1];
t1=1;
for (i=2;i<=N;i++){
if (*min1>v[i]){
*min1=v[i];
t1=i;
}
}
*min2=w[1];
t2=1;
for (i=2;i<=M;i++){
if (*min2>w[i]){
*min2=w[i];
t2=-i;
}
}
if (*min1<*min2){
return(t1);
}else { return(t2);}
}
int main(){
long m[16][16], v[16],w[16],s=0;
long min1=-1,min2=-1;
int i,j,N,M,z,a=2;
FILE *fp;
fp=fopen("flip.in", "r");
fscanf(fp, "%d %d", &N, &M);
for (i=1;i<=N;i++)
v[i]=0;
for (i=1;i<=M;i++)
w[i]=0;
for (i=1;i<=N;i++){
for (j=1;j<=M;j++){
fscanf(fp, "%ld", &m[i][j]);
v[i]+=m[i][j];
w[j]+=m[i][j];
}
}
fclose(fp);
while(min1<0 && min2<0){
z = search_for_min(N,M,v,w,&min1,&min2);
if (z<0){
for (i=1;i<=N;i++){
m[i][-z]=-m[i][-z];
}
}
else{
for (i=1;i<=M;i++){
m[z][i]=-m[z][i];
}
}
for (i=1;i<=N;i++)
v[i]=0;
for (i=1;i<=M;i++)
w[i]=0;
for (i=1;i<=N;i++){
for (j=1;j<=M;j++){
v[i]+=m[i][j];
w[j]+=m[i][j];
}
}
}
for (i=1;i<=N;i++){
for (j=1;j<=M;j++){
s+=m[i][j];
}
}
fp=fopen("flip.out", "w");
fprintf(fp, "%ld", s);
fclose(fp);
}