제출 #1171186

#제출 시각아이디문제언어결과실행 시간메모리
1171186SmuggingSpun카멜레온의 사랑 (JOI20_chameleon)C++20
20 / 100
1 ms416 KiB
#include "chameleon.h"
#include<bits/stdc++.h>
using namespace std;
void Solve(int n){
    if(n <= 50){
        vector<vector<int>>pp(n << 1 | 1);
        vector<bool>vis(n << 1 | 1, false);
        for(int i = 1; i <= (n << 1); i++){
            if(!vis[i]){
                vector<int>p;
                for(int j = 1; j <= (n << 1); j++){
                    if(i != j){
                        vector<int>v = {i, j};
                        if(Query(v) == 1){
                            p.emplace_back(j);
                        }
                    }
                }
                if(p.size() == 1){
                    Answer(i, p[0]);
                    vis[i] = vis[p[0]] = true;
                }
                else{
                    pp[i] = p;
                }
            }
        }
        vector<vector<int>>candidate(n << 1 | 1);
        for(int i = 1; i <= (n << 1); i++){
            if(!vis[i]){
                if(pp[i].size() < 3){
                    return;
                }
                vector<vector<int>>v = {{i, pp[i][0], pp[i][1]}, {i, pp[i][0], pp[i][2]}, {i, pp[i][1], pp[i][2]}};
                if(Query(v[0]) == 1){
                    candidate[i] = vector<int>{pp[i][0], pp[i][1]};
                }
                else if(Query(v[1]) == 1){
                    candidate[i] = vector<int>{pp[i][0], pp[i][2]};
                }
                else{
                    candidate[i] = vector<int>{pp[i][1], pp[i][2]};
                }
            }
        }
        for(int i = 1; i <= (n << 1); i++){
            if(!vis[i]){
                for(int& j : candidate[i]){
                    if(candidate[j].size() < 2){
                        return;
                    }
                    if(candidate[j][0] == i || candidate[j][1] == i){
                        Answer(i, j);
                        vis[i] = vis[j] = true;
                        break;
                    }
                }
            }
        }
    }
}
#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...