제출 #1310805

#제출 시각아이디문제언어결과실행 시간메모리
1310805georgeckito동굴 (IOI13_cave)C++20
100 / 100
364 ms640 KiB
#include "cave.h" #include <bits/stdc++.h> using namespace std; #define pb push_back void exploreCave(int N){ vector<int> S(N, -67); vector<int> d(N, -67); for(int o = 0; o < N; o++){ vector<int> v; for(int i = 0; i < N; i++) if(S[i] < 0) v.pb(i); vector<int> fix(N); for(int i = 0; i < N; i++) fix[i] = (S[i] < 0 ? 0 : S[i]); int x = tryCombination(fix.data()); int si = (x < 0 || x > o) ? 0 : 1; if(v.size() == 1){ S[v[0]] = si; d[v[0]] = o; continue; } vector<int> vv = v; while(vv.size() > 1){ int m = vv.size() / 2; vector<int> l(vv.begin(), vv.begin() + m); vector<int> r(vv.begin() + m, vv.end()); for(int i = 0; i < N; i++) fix[i] = (S[i] < 0 ? 1 - si : S[i]); for(int idx : l) fix[idx] = si; int xx = tryCombination(fix.data()); if(xx < 0 || xx > o) vv = l; else vv = r; } S[vv[0]] = si; d[vv[0]] = o; } vector<int> SSS = S, DDD = d; int St[N], Dt[N]; for(int i = 0; i < N; i++){ St[i] = SSS[i]; Dt[i] = DDD[i]; } answer(St, Dt); }
#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...