제출 #1224422

#제출 시각아이디문제언어결과실행 시간메모리
1224422ByeWorldFinding Routers (IOI20_routers)C++20
0 / 100
0 ms320 KiB
#include "routers.h" #include <bits/stdc++.h> #define ll long long #define se second #define fi first #define pb push_back #define lf (id<<1) #define rg ((id<<1)|1) #define md ((l+r)>>1) using namespace std; int n, ma; int a[1010]; void solve(int le, int ri){ if(le > ri) return; int i = (le+ri)>>1; int l = 0, r = ma; for(int j=i-1; j>=1; j--){ if(a[j] != -1){ l = a[j]; break; } } for(int j=i+1; j<=n-1; j++){ if(a[j] != -1){ r = a[j]; break; } } l++; int p = l, q = r; int mid=0, LE=0; while(l<=r){ mid = md; if(use_detector(mid) == i) r = mid-1, LE = mid; else l = mid+1; } l = p; r = q; int RI = 0; while(l<=r){ mid = md; if(use_detector(mid) == i) l = mid+1, RI = mid; else r = mid-1; } // cout << cnt << " cnt\n"; LE++; a[i] = (LE+RI)/2; solve(le, i-1); solve(i+1, ri); } std::vector<int> find_routers(int MA, int N, int q) { n = N; ma = MA; for(int i=1; i<=n-1; i++) a[i] = -1; solve(1, n-1); vector<int> ans; ans.pb(0); for(int i=1; i<=n-1; i++) ans.pb(a[i]); // for(auto in : ans) cout << in << " in\n"; return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...