Mania de Ímpar

Problem Link

Solution by TioPatinhas100 pts

Code / Notes

#include <bits/stdc++.h>
using namespace std;
int ans1;
int ans2;
vector<vector<int>>A;
vector<vector<int>>B;
vector<vector<int>>C;
vector<vector<int>>D;

int comparar(int i, int j) {
    if ((A[i][j])%2 == (B[i][j])%2) {
    } else {
        ans1++;
        A[i][j]++;
    }
    if ((D[i][j])%2 == (C[i][j])%2) {
    } else {
        ans2++;
        D[i][j]++;
    }
    return 0;
}
int main() {
    int N, M;
    cin >> N >> M;
    ans1 = 0;
    ans2 = 0;
    A.resize(N, vector<int>(M));
    B.resize(N, vector<int>(M));
    C.resize(N, vector<int>(M));
    D.resize(N, vector<int>(M));

    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            int x_i_j;
            cin >> x_i_j;
            A[i][j] = D[i][j] = x_i_j;
            if (i%2 == j%2) {
                B[i][j] = 0;
                C[i][j] = 1;
            } else {
                B[i][j] = 1;
                C[i][j] = 0;
            }
        comparar(i,j);
        }
    }
    if (ans1 > ans2) {
        cout << ans2 << endl;
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < M; j++) {
                cout << D[i][j] << ' ';
            }
            cout << endl;
        }
    } else {
        cout << ans1 << endl;
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < M; j++) {
                cout << A[i][j] << ' ';
            }
            cout << endl;
        }
    }
}
// Observe os dois padrões de tabuleiro
// Pode criar dois ints
// esperado0 e esperado1 onde cada um é um dos tipos esperados
// faz um for e compara eles, depois só adiciona uma gota pelo if

Last updated 1 month, 3 weeks ago


« Back to problem