Cod sursa(job #1238490)

Utilizator alina.rubleaAlina Rublea alina.rublea Data 7 octombrie 2014 00:46:30
Problema Jocul Flip Scor 20
Compilator c Status done
Runda Arhiva de probleme Marime 2.45 kb
#include <stdio.h>
#include <string.h>
#include <math.h>

void main()
{
   FILE *fp,*fout;
   char buff[255];

   fp = fopen("flip.in", "r");
   fout = fopen("flip.out","w");
   int i,j;
   int n,m;
   int a[17][17],alin[17][17],acol[17][17];
   int vpozlin[17],vneglin[17],vpozcol[17],vnegcol[17];
   int sum = 0;
   if( fp != NULL ){
       fscanf(fp,"%d%d",&n,&m);
       printf("n = %d m = %d\n",n,m);
       for(i = 0; i < n; i++)
            vpozlin[i] = vneglin[i] = 0;
       for(i = 0; i < m; i++)
            vpozcol[i] = vnegcol[i] = 0;
       for (i = 0 ; i < n; i++){
          for (j = 0; j < m; j++){
              fscanf(fp,"%d",&alin[i][j]);
              a[i][j] = acol[i][j] = alin[i][j];
              if (alin[i][j] > 0)
              {
                vpozlin[i] += alin[i][j];
                vpozcol[j] += alin[i][j];
              }
              else
              {
                vneglin[i] += alin[i][j];
                vnegcol[j] += alin[i][j];
              }
          }
       }
       for(i = 0 ; i < n; i++) {
           //printf("pozlin = %d %d neglin\n",vpozlin[i],vneglin[i]);
           int ok = 0;
           if (vpozlin[i] < abs(vneglin[i]))
                ok = 1;
           if (ok) {
               for (j = 0; j < m; j++)
                    alin[i][j] *= (-1); 
           }
            //for j
       }
       for(i = 0 ; i < m; i++){
            //printf("pozcol = %d %d negcol\n",vpozcol[i],vnegcol[i]);
            int ok = 0;
            if (vpozcol[i] < abs(vnegcol[i]))
                ok = 1;
            if (ok) {
               for (j = 0; j < n; j++)
                    acol[j][i] *= (-1); 
           }
                
        }
        
        for (i = 0; i < n; i++){
            for (j = 0; j < m; j++){
                if (alin[i][j] == acol[i][j])
                    sum += alin[i][j];
                //else if (i != j)
                //    sum += abs(alin[i][j]);
                else{
                    if (alin[i][j] != a[i][j])
                        sum += alin[i][j];
                    else
                        sum += acol[i][j];
                }
            }
        }
        
        //if (sumlin <= sumcol)
         //   sum += sumcol;
        //else
          //  sum += sumlin;
        
        

            fprintf(fout,"%d\n",sum);
            printf("%d\n",sum);

      }
      fclose(fp);
      fclose(fout);
   }