제출 #1369134

#제출 시각아이디문제언어결과실행 시간메모리
1369134pcheloveksCasino (JOI26_casino)C++20
0 / 100
0 ms764 KiB
#include "Azzurro.h"

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

std::vector<std::vector<int>> Azzurro(int N, int L, std::string S) {
    std::vector<std::vector<int>> x(N, std::vector<int>(N, 0));

    int ptr = 0;
    for(int i = 0; i < 4; i++) {
        for(int j = 0; j < 4; j++) {
            if(i + j == 4) continue;

            if(ptr >= S.size()) continue;
            if(S[ptr] == 'A') {
                x[i][j + 4] = 0;
                x[i + 4][j] = 0;
            }
            else {
                x[i][j + 4] = 1;
                x[i + 4][j] = 1;
            }
            ptr++;
        }
    }

    for(int i = 0; i < 7; i++) {
        if(ptr >= S.size()) continue;

        int j = i;
        int v = 0;

        if(S[ptr] == 'B') v ^= 1;

        while(j >= 0) v ^= x[i - j][j--];
        

        if(v != 0) {
            j = i;
            while(j >= 0) {
                if(!(((i - j) >= 4 && j < 4) || ((i - j) < 4 && j >= 4))) {
                    x[i - j][j] ^= 1;
                    break;
                }
            }
        }
        ptr++;
    }
    for(int i = 8; i < 15; i++) {
        if(ptr >= S.size()) continue;

        int j = 7;
        int v = 0;

        if(S[ptr] == 'B') v ^= 1;

        while(j >= 0) v ^= x[i - j][j--];
        

        if(v != 0) {
            j = i;
            while(j >= 0) {
                if(!(((i - j) >= 4 && j < 4) || ((i - j) < 4 && j >= 4))) {
                    x[i - j][j] ^= 1;
                    break;
                }
            }
        }
        ptr++;
    }

    return x;
}
#include "Bordeaux.h"

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

std::string Bordeaux(int N, int L, std::vector<std::vector<int>> T) {
    std::vector < int > res(61);

    int flag = 0;
    for(int i = 0; i < 4; i++) {
        for(int j = 0; j < 4; j++) {
            if(i + j == 4 && T[i + 4][j] == 0) flag = 1;
        }
    }

    int ptr = 0;
    if(flag) {
        for(int i = 0; i < 4; i++) {
            for(int j = 0; j < 4; j++) {
                if(i + j == 4) continue;

                res[ptr] = T[i][j + 4];
                ptr++;
            }
        }
    }
    else {
        for(int i = 0; i < 4; i++) {
            for(int j = 0; j < 4; j++) {
                if(i + j == 4) continue;

                res[ptr] = T[i + 4][j];
                ptr++;
            }
        }
    }

    for(int i = 0; i < 7; i++) {
        int j = i;
        while(j >= 0) {
            res[ptr] ^= T[i - j][j];
            j--;
        }
        ptr++;
    }


    for(int i = 8; i < 15; i++) {
        int j = 7;
        while(j >= 0) {
            res[ptr] ^= T[i - j][j];
            j--;
        }
        ptr++;
    }

    std::string s(L, 'A');
    for(int j = 0; j < L; j++) {
        if(res[j] == 1) s[j] = 'B';
    }

	return s;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…