제출 #705850

#제출 시각아이디문제언어결과실행 시간메모리
705850qwerasdfzxclMinerals (JOI19_minerals)C++17
80 / 100
46 ms4084 KiB
#include "minerals.h"
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
int n, cur, ans[100100];

void dnc0(vector<int> a);
void dnc1(vector<int> L, vector<int> R, bool onL, bool onR);

int myquery(int x){
    cur = Query(x);
    return cur;
}

void dnc0(vector<int> a){
    int s0 = cur, c = a.size() / 2;

    if (c==0) return;
    if (c==1){
        ans[a[0]] = a[1];
        ans[a[1]] = a[0];
        return;
    }

    vector<int> L, R, Z;
    for (auto &x:a){
        int prv = cur;
        int now = myquery(x);
        if (now==prv){
            R.push_back(x);
        }
        else{
            L.push_back(x);
        }
    }

    dnc1(L, R, 1, 1);
}

void dnc1(vector<int> L, vector<int> R, bool onL, bool onR){
    // printf("dnc1: ");
    // for (auto &x:L) printf("%d ", x);
    // printf("\n");
    // for (auto &x:R) printf("%d ", x);
    // printf("\n");
    
    int c = L.size();

    if (c==0) return;
    if (c==1){
        ans[L[0]] = R[0];
        ans[R[0]] = L[0];
        return;
    }

    vector<int> L1, R1, L2, R2;
    for (int i=0;i<c/2;i++) {L1.push_back(L[i]); myquery(L[i]);}
    for (int i=c/2;i<c;i++) L2.push_back(L[i]);

    for (auto &x:R){
        int prv = cur;
        int delta = myquery(x) - prv;

        if ((!onL) == (delta==0)) R1.push_back(x);
        else R2.push_back(x);
    }

    dnc1(L1, R1, !onL, !onR);
    dnc1(L2, R2, onL, !onR);
}

void Solve(int N) {
    n = N, cur = 0;
    vector<int> a;
    for (int i=1;i<=n*2;i++) a.push_back(i);
    
    dnc0(a);

    for (int i=1;i<=n*2;i++) if (i < ans[i]) Answer(i, ans[i]);
}

컴파일 시 표준 에러 (stderr) 메시지

minerals.cpp: In function 'void dnc0(std::vector<int>)':
minerals.cpp:17:9: warning: unused variable 's0' [-Wunused-variable]
   17 |     int s0 = cur, c = a.size() / 2;
      |         ^~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...