Cod sursa(job #2061757)

Utilizator cyg_ionutStan Ionut Gabriel cyg_ionut Data 9 noiembrie 2017 17:54:53
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.55 kb
#include <bits/stdc++.h>
using namespace std;

int ma[20][20], maxs = 0, cl[20][20];

void coloane(int n, int m) {

    for (int j = 1; j <= m; j++) {
        int s = 0;
        for (int i = 1; i <= n; i++)
            s = s + ma[i][j];

        if (s < 0) {
            for (int i = 1; i <= n; i++)
                ma[i][j] = ma[i][j] * -1;
            s = 0;
            for (int i = 1; i <= n; i++)
                for(int k = 1; k <= m; k++)
                    s = s + ma[i][k];
            if (s >= maxs) {
                maxs = s;
                for (int i = 1; i <= n; i++)
                    for(int k = 1; k <= m; k++)
                        cl[i][k] = ma[i][k]; }
        coloane(n, m); } } }

void lini(int n, int m) {

    for (int i = 1; i <= n; i++) {
        int s = 0;

        for (int j  = 1; j <= m; j++)
            s = s + cl[i][j];

        if (s < 0) {
            s = 0;

            for (int j = 1; j <= m; j++)
                cl[i][j] = cl[i][j] * -1;

            for (int k = 1; k <= n; k++)
                for (int j = 1; j <= m; j++)
                    s = s + cl[k][j];

            if(s >= maxs) {
                maxs = s;
                lini(n, m); } } } }

int main() {
    freopen("flip.in", "r", stdin);
    freopen("flip.out", "w", stdout);
    int n, m;
    scanf("%d", &n);
    scanf("%d", &m);
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
            scanf("%d", &ma[i][j]);

    coloane(n, m);
    lini(n, m);

    printf("%d", maxs);

    return 0; }