제출 #1086936

#제출 시각아이디문제언어결과실행 시간메모리
1086936MateiKing80동굴 (IOI13_cave)C++14
0 / 100
265 ms860 KiB
#include "cave.h" #include <bits/stdc++.h> using namespace std; using pii = pair<int, int>; #define fr first #define sc second /* vector<int> ss, dd; int n; void init() { cin >> n; for(int i = 0; i < n; i ++) cin >> ss[i]; for(int i = 0; i < n; i ++) cin >> dd[i]; } int tryCombination(vector<int> s) { vector<int> bn(n); for(int i = 0; i < n; i ++) }*/ int ntc(vector<int> v) { int mad[5000], sus = 0; for(auto i : v) mad[sus ++] = i; return tryCombination(mad); } void nan(vector<int> v, vector<int> w) { int mad[5000], sus = 0; for(auto i : v) mad[sus ++] = i; sus = 0; int ultra[5000]; for(auto i : w) ultra[sus ++] = i; answer(mad, ultra); } void exploreCave(int n) { //init(); const int lg = (int)log2(n); vector<pii> ans; vector<bool> f(n, false); for(int i = 0; i < n; i ++) { vector<int> sus; for(int j = 0; j < n; j ++) sus.push_back(1); for(auto j : ans) sus[j.fr] = j.sc; bool turip = (ntc(sus) == i); int pas = 1 << lg, pos = -1; while(pas) { vector<int> di(n, 1); for(int j = 0; j <= max(n - 1, pos + pas); j ++) di[j] = 0; for(auto j : ans) di[j.fr] = j.sc; bool nturip = (ntc(sus) == i); if(nturip == turip) pos += pas; pas /= 2; } pos ++; if(turip) ans.push_back({pos, 0}); else ans.push_back({pos, 1}); } vector<int> s(n), d(n); int sus = 0; for(auto i : ans) s[i.fr] = i.sc, d[sus ++] = i.fr; nan(s, d); }
#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...