제출 #1339812

#제출 시각아이디문제언어결과실행 시간메모리
1339812Andrey카멜레온의 사랑 (JOI20_chameleon)C++20
44 / 100
24 ms4776 KiB
#include "chameleon.h"
#include <bits/stdc++.h>
using namespace std;

int n;
bool bruh[1001][1001];
int yeah[1001][1001];

void calc(vector<int> wut, int x) {
    if(wut.size() == 1) {
        bruh[wut[0]][x] = 1;
        bruh[x][wut[0]] = 1;
        return;
    }
    int mid = wut.size()/2;
    vector<int> a(0);
    vector<int> b(0);
    for(int i = 0; i < mid; i++) {
        a.push_back(wut[i]);
    }
    for(int i = mid; i < wut.size(); i++) {
        b.push_back(wut[i]);
    }
    a.push_back(x);
    if(Query(a) < a.size()) {
        a.pop_back();
        calc(a,x);
    }
    b.push_back(x);
    if(Query(b) < b.size()) {
        b.pop_back();
        calc(b,x);
    }
}

void Solve(int N) {
    n = N;
    vector<int> wut[4];
    for(int i = 1; i <= 2*n; i++) {
        int p = -1;
        for(int j = 0; j < 4; j++) {
            vector<int> wow = wut[j];
            wow.push_back(i);
            if(Query(wow) < wow.size()) {
                calc(wut[j],i);
            }
            else {
                p = j;
            }
        }
        wut[p].push_back(i);
    }
    for(int i = 1; i <= 2*n; i++) {
        vector<int> yo(0);
        for(int j = 1; j <= 2*n; j++) {
            if(bruh[i][j]) {
                yo.push_back(j);
            }
        }
        if(yo.size() == 1) {
            yeah[i][yo[0]]++;
        }
        else if(yo.size() == 2) {
            yeah[i][yo[0]]++;
            yeah[i][yo[1]]++;
        }
        else {
            if(Query({yo[0],yo[1],i}) == 1) {
                yeah[i][yo[0]]++;
                yeah[i][yo[1]]++;
            }
            else if(Query({yo[1],yo[2],i}) == 1) {
                yeah[i][yo[1]]++;
                yeah[i][yo[2]]++;
            }
            else {
                yeah[i][yo[0]]++;
                yeah[i][yo[2]]++;
            }
        }
    }
    for(int i = 1; i <= 2*n; i++) {
        for(int j = i+1; j <= 2*n; j++) {
            if(yeah[i][j]+yeah[j][i] >= 2) {
                Answer(i,j);
            }
        }
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...