Submission #1364467

#TimeUsernameProblemLanguageResultExecution timeMemory
1364467HasanV11010238Casino (JOI26_casino)C++20
8 / 100
333 ms844 KiB
#include "Azzurro.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; }
}

std::vector<std::vector<int>> Azzurro(int N, int L, std::string S) {
    vector<vector<vector<int>>> v(2 * N);
    for (int i = 0; i < N; i++){
        for (int j = 0; j < N; j++){
            v[i + j].push_back({i, j});
        }
    }
    vector<vector<int>> ans(N, vector<int>(N, 0));
    int cur = 0;
    for (int i = 0; i < 2 * N; i++){
        if (i == 1 || i == 2 * N - 3) continue;
        int sz = ((int)v[i].size() + 1) / 2;
        for (int j = 0; j + sz <= v[i].size(); j++){
            if (j + sz == v[i].size() && v[i].size() % 2 == 0) continue;
            if (cur < L && S[cur] == 'B'){
                ans[v[i][j][0]][v[i][j][1]] = 1;
                if (j + sz < v[i].size()) ans[v[i][j + sz][0]][v[i][j + sz][1]] = 1;
            }
            cur++;
        }
    }
    return ans;
}
#include "Bordeaux.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; }
}

std::string Bordeaux(int N, int L, std::vector<std::vector<int>> T) {
    std::string s(L, 'A');
    vector<vector<vector<int>>> v(2 * N);
	for (int i = 0; i < N; i++){
        for (int j = 0; j < N; j++){
            v[i + j].push_back({i, j});
        }
    }
    int cur = 0;
    int x = 0, y = -1;
    for (int i = 0; i < 2 * N; i++){
        int ch = 1;
        if (i == 1 || i == 2 * N - 3){
            for (int j = 0; j < v[i].size(); j++){
                if (T[v[i][j][0]][v[i][j][1]] == 1) x = v[i][j][0], y = v[i][j][1];
            }
            continue;
        }
        int sz = ((int)v[i].size() + 1) / 2;
        for (int j = 0; j + sz <= v[i].size(); j++){
            if (cur >= L) continue;
            if (j + sz == v[i].size() && v[i].size() % 2 == 0) continue;
            if (j + sz == v[i].size()){
                T[v[i][j][0]][v[i][j][1]] ^= ch;
                if (T[v[i][j][0]][v[i][j][1]] == 1) s[cur] = 'B';
                cur++;
                continue;
            }
            if (T[v[i][j][0]][v[i][j][1]] != T[v[i][j + sz][0]][v[i][j + sz][1]]){
                ch = 0;
                int di = abs(v[i][j][0] - x) + abs(v[i][j][1] - y);
                if (di == 1){
                    T[v[i][j][0]][v[i][j][1]] ^= 1;
                    x = v[i][j][0], y = v[i][j][1];
                }
                else{
                    T[v[i][j + sz][0]][v[i][j + sz][1]] ^= 1;
                    x = v[i][j + sz][0], y = v[i][j + sz][1];
                }
            }
            if (T[v[i][j][0]][v[i][j][1]] == 1) s[cur] = 'B';
            cur++;
        }
    }
    return s;
}
#Result Execution timeMemoryGrader output
Fetching results...