제출 #1202525

#제출 시각아이디문제언어결과실행 시간메모리
1202525browntoadFinding Routers (IOI20_routers)C++20
100 / 100
4 ms8260 KiB
#include "routers.h" #include <bits/stdc++.h> using namespace std; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; template<typename T> using pbds_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; #define ll long long // #define int ll #define FOR(i, a, b) for (int i = (a); i < (b); i++) #define REP(i, n) FOR(i, 0, n) #define RREP(i, n) for (int i = (n)-1; i >= 0; i--) #define RREP1(i, n) for (int i = (n); i >= 1; i--) #define REP1(i, n) FOR(i, 1, n+1) #define pii pair<int, int> #define ppi pair<pii, int> #define pip pair<int, pii> #define f first #define s second #define pb push_back #define ALL(x) (x).begin(), (x).end() #define SZ(x) (int)((x).size()) #define endl '\n' #define IOS() ios::sync_with_stdio(false), cin.tie(0), cout.tie(0) const ll maxn = 2e6+5; const ll mod = 998244353; const ll inf = (1ll<<60); const int iinf = 1e9+5; namespace{ ll pw(ll x, ll p, ll m){ ll ret = 1; x %= m; while(p > 0){ if (p & 1){ ret *= x; ret %= m; } x *= x; x %= m; p >>= 1; } return ret; } ll inv(ll x, ll m){ return pw(x, m-2, m); } } vector<int> mnpos(maxn); void go(int l, int r, int pa, int pb){ if (pa > pb) return; if (l > r) return; int mid = l+r>>1; int idx = use_detector(mid); if (pa <= idx && idx <= pb){ mnpos[idx] = min(mnpos[idx], mid); go(l, mid-1, pa, idx); go(mid+1, r, idx+1, pb); return; } if (idx < pa){ go(mid+1, r, pa, pb); } else go(l, mid-1, pa, pb); } std::vector<int> find_routers(int len, int n, int q) { int idx; std::vector<int> ans; REP(i, n){ mnpos[i] = len+5; } go(0, len, 1, n-1); ans.pb(0); int idp = 0; for (int i = 1; i < n; i++) { idp += 2*(mnpos[i]-idp-1); ans.pb(idp); } 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...