Cod sursa(job #408444)

Utilizator holy_mentsPatrick Ivan holy_ments Data 3 martie 2010 03:02:14
Problema Jocul Flip Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.66 kb
#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");
    printf("%ld", s);
    fclose(fp);

}