제출 #1355218

#제출 시각아이디문제언어결과실행 시간메모리
1355218raphaelpCasino (JOI26_casino)C++20
100 / 100
247 ms844 KiB
#include "Azzurro.h"
#include<bits/stdc++.h>
using namespace std;

vector<vector<int>> Azzurro(int N, int L, string S) {
    vector<vector<int>> x(N, vector<int>(N, 0));
    vector<int> val;
    for (int i=0; i<L; i++)val.push_back((S[i] == 'B'));
    x[0][0] = val[0];
    int buff = 1;
    for (int i=1; i<8; i++)
    {
        for (int j=0; j<7; j++)
        {
            if (buff==L)break;
            x[i][j] = val[buff++];
        }
    }
    x[N-1][N-1] = val.back();
    for (int i=2; i<13; i++)
    {
        int a = 0, b = i;
        if (i>7) a = i-7, b = 7;
        int a2=a+2, b2=b-2;
        while(a2<8 && b2>=0)
        {
            x[a][b] = x[a][b]^x[a2][b2];
            a2+=2;
            b2-=2;
        }
    }
    return x;
}
#include "Bordeaux.h"
#include<bits/stdc++.h>
using namespace std;

namespace {
    // グローバル変数と内部関数は無名名前空間内で宣言すること
    // All global variables and internal functions should be declared in an unnamed namespace
    int variable_example = 0;
    int function_example(void) { return 0; }
}

string Bordeaux(int N, int L, vector<vector<int>> T) {
    vector<int> xors(16);
    string S, ab = "AB";
    vector<vector<int>> x(N, vector<int> (N));
    for (int i=0; i<N; i++)
    {
        for (int j=0; j<N; j++)
        {
            x[i][j] = T[i][j];
        }
    }
    for (int i=1; i<14; i++)
    {
        int a = 0, b = i;
        if (i>7) a = i-7, b = 7;
        xors[i] = x[a][b];
        a+=2, b-=2;
        while(a<8 && b>=0)
        {
            xors[i] = xors[i]^x[a][b];
            a+=2;
            b-=2;
        }
    }
    x[0][0] = 1 - x[0][0];
    x[N-1][N-1] = 1 - x[N-1][N-1];
    int a=0, b=0;
    for (int i = 1; i<14; i++)
    {
        if (i<8)
        {
            if (xors[i] ^ (a%2))
                b++;
            else a++;
        }
        else
        {
            if (xors[i] ^ (b%2))
                b++;
            else a++;
        }
        x[a][b] = 1 - x[a][b];
    }
    if (L!=1)
        S.push_back(ab[x[0][0]]);
    for (int i=1; i<8; i++){
        for (int j=0; j<7; j++){
            if (S.size() == L-1)break;
            S.push_back(ab[x[i][j]]);
        }
    }
    S.push_back(ab[x[N-1][N-1]]);
    return S;
}
#Verdict Execution timeMemoryGrader output
Fetching results...