제출 #782376

#제출 시각아이디문제언어결과실행 시간메모리
782376sadsaFinding Routers (IOI20_routers)C++17
100 / 100
1 ms680 KiB
#include "routers.h" #include <bits/stdc++.h> using namespace std; using vi = vector<int>; using ii = pair<int, int>; using vii = vector<ii>; using i64 = int64_t; using vl = vector<i64>; using ll = pair<i64, i64>; using vll = vector<ll>; constexpr int iINF = numeric_limits<int>::max(); constexpr i64 lINF = numeric_limits<i64>::max(); #define RANGE(x) begin(x), end(x) template <typename... T> void DBG(T&&... args) { ((cerr << args << ' '), ...) << '\n'; } template <typename T> ostream &operator<<(ostream &out, const vector<T> &vec) { out << '{'; for (size_t i = 0; i < vec.size()-1; ++i) out << vec[i] << ", "; out << vec.back() << '}'; return out; } template <typename T1, typename T2> ostream &operator<<(ostream &out, const pair<T1, T2> &pr) { out << '(' << pr.first << ", " << pr.second << ')'; return out; } std::vector<int> find_routers(int l, int n, int q) { std::vector<int> ans(n, 0); vi queries(l); iota(RANGE(queries), 0); int prv = 0; for (int i = 1; i < n; ++i) { int border = lower_bound(queries.begin(), queries.end(), i, [&] (const int a, int b) { int x = a; if (x > 0) queries[a] = x = -use_detector(a); return -x < b; }) - queries.begin() - 1; int dist = border - prv; int nxt = border + dist; ans[i] = nxt; prv = nxt; } 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...