Cod sursa(job #2951833)

Utilizator Alex_DumitrascuAlex Dumitrascu Alex_Dumitrascu Data 7 decembrie 2022 14:37:03
Problema Jocul Flip Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.5 kb
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
FILE *fin=fopen("flip.in", "r");
FILE *fout=fopen("flip.out", "w");
int mat[18][18];
int slinii[18], scoloane[18];
struct data
{
    int type;
    int poz;
    int value;
};
vector <data> v;
bool sorted(data a, data b)
{
    return a.value<b.value;
}
int main()
{
    int n, m;
    fscanf(fin, "%d%d", &n, &m);
    for (int i=1; i<=n; i++) {
        for (int j=1; j<=m; j++) {
            fscanf(fin, "%d", &mat[i][j]);
        }
    }
    int s=0;
    for (int i=1; i<=n; i++) {
        for (int j=1; j<=m; j++) {
            slinii[i]+=mat[i][j];
        }
        data d;
        d.poz=i; d.type=1; d.value=slinii[i];
        v.push_back(d);
    }
    for (int j=1; j<=m; j++) {
        for (int i=1; i<=n; i++) {
            scoloane[j]+=mat[i][j];
        }
        data d;
        d.poz=j; d.type=2; d.value=scoloane[j];
        v.push_back(d);
    }
    sort(v.begin(), v.end(), sorted);
    for (int i=0; i<v.size()&&v[i].value<0; i++) {
        int type=v[i].type;
        if (type==1) {
            int k=v[i].poz;
            for (int j=1; j<=m; j++) mat[k][j]*=-1;
        }
        if (type==2) {
            int j=v[i].poz;
            for (int k=1; k<=n; k++) mat[k][j]*=-1;
        }
    }
    s=0;
    for (int i=1; i<=n; i++) {
        for (int j=1; j<=m; j++) {
            s+=mat[i][j];
        }
    }
    fprintf(fout, "%d", s);
    return 0;
}