제출 #1359809

#제출 시각아이디문제언어결과실행 시간메모리
1359809PakinDioxideCasino (JOI26_casino)C++17
100 / 100
244 ms824 KiB
#include "Azzurro.h"
#include <bits/stdc++.h>

using namespace std;

vector <vector <int>> Azzurro(int N, int l, string S) {
    vector <vector <int>> A(N, vector <int>(N));
    int it = 0;
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            if (i == 0 && j > 0) continue;
            if (i < N-1 && j == N-1) continue;
            if (it < l) A[i][j] = S[it++] - 'A';
        }
    }
    for (int c = 1; c < 2*(N-1); c++) {
        int l = max(0, c-(N-1)), r = min(c, N-1);
        for (int i = l + 2; i <= r; i += 2) A[l][c-l] ^= A[i][c-i];
    }
    return A;
}
#include "Bordeaux.h"
#include <bits/stdc++.h>

using namespace std;

string Bordeaux(int N, int l, vector <vector <int>> A) {
    int x = 0, y = 0;
    for (int c = 1; c < 2*(N-1); c++) {
        int l = max(0, c-(N-1)), r = min(c, N-1);
        int val = 0;
        for (int i = l; i <= r; i += 2) val ^= A[i][c-i];
        if (val == ((x - l) & 1)) x++;
        else y++;
        A[x][y] ^= 1;
    }
    A[0][0] ^= 1, A[N-1][N-1] ^= 1;
    string s = "";
    int it = 0;
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            if (i == 0 && j > 0) continue;
            if (i < N-1 && j == N-1) continue;
            if (it++ < l) s += ('A' + A[i][j]);
        }
    }
    return s;
}

#Verdict Execution timeMemoryGrader output
Fetching results...