제출 #521299

#제출 시각아이디문제언어결과실행 시간메모리
521299qwerasdfzxclPark (JOI17_park)C++14
10 / 100
454 ms620 KiB
#include "park.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; mt19937 seed(123456); uniform_int_distribution<int> rng(0, 2147483647); static int Place[1400]; int getrand(int l, int r){ return rng(seed)%(r-l+1) + l; } void dnc(vector<int> A){ //for (auto &x:A) printf(" %d", x); //printf("\n"); if (A.size()<=1) return; memset(Place, 0, sizeof(Place)); for (auto &x:A) Place[x] = 1; int idx = getrand(1, (int)A.size()-1); //printf("idx: %d\n", A[idx]); vector<int> nA = {A[0]}, nB = {A[idx]}; Place[A[idx]] = 0; for (int i=1;i<(int)A.size();i++) if (i!=idx){ if (Ask(min(A[0], A[i]), max(A[0], A[i]), Place)) nA.push_back(A[i]); else nB.push_back(A[i]); } //printf("YES\n"); for (auto &x:A) Place[x] = 0; Place[A[idx]] = 1; for (auto &x:nA){ //printf("x = %d\n", x); Place[x] = 1; if (Ask(min(x, A[idx]), max(x, A[idx]), Place)){ if (A[idx] < x) Answer(A[idx], x); else Answer(x, A[idx]); } Place[x] = 0; } dnc(nA); dnc(nB); } void Detect(int T, int N) { vector<int> V; for (int i=0;i<N;i++) V.push_back(i); dnc(V); }
#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...