제출 #1143237

#제출 시각아이디문제언어결과실행 시간메모리
1143237josephtenorio동굴 (IOI13_cave)C++20
100 / 100
445 ms532 KiB
#include <iostream> #include <vector> #include <algorithm> #include "cave.h" using namespace std; void solve(int num, vector<pair<int, int>> &ns, int &n) { int ini = 0, fin = n - 1, ob = 1; int tri[n]; for (int t1 = 0; t1 < n; t1++) { tri[t1] = ob; } for (int t1 = 0; t1 < n; t1 ++) { if (ns[t1].first != -1) { tri[t1] = ns[t1].second; } } if (tryCombination(tri) == num) { ob = !ob; } for (int t1 = 0; t1 < n; t1++) { tri[t1] = !ob; } for (int t1 = 0; t1 < n; t1 ++) { if (ns[t1].first != -1) { tri[t1] = ns[t1].second; } } while (ini != fin) { //cout << endl; int mit = (ini + fin) / 2; for (int t1 = ini; t1 <= mit; t1++) { tri[t1] = ob; } for (int t1 = 0; t1 < n; t1 ++) { if (ns[t1].first != -1) { tri[t1] = ns[t1].second; } } //cout << ini << " " << fin << endl; if (tryCombination(tri) == num) { ini = mit + 1; } else { for (int t1 = ini; t1 <= mit; t1++) { tri[t1] = !ob; } fin = mit; } //cout << ini << " " << fin << endl; //cout << endl; } ns[ini] = {num, ob}; return ; } void exploreCave(int n) { vector<pair<int, int>> ns(n, {-1, 0}); for (int t1 = 0; t1 < n; t1 ++) { solve(t1, ns, n); } int s[n], d[n]; for (int t1 = 0; t1 < n; t1 ++) { s[t1] = ns[t1].second; d[t1] = ns[t1].first; } answer(s, d); return ; }
#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...