제출 #1143957

#제출 시각아이디문제언어결과실행 시간메모리
1143957gyg장난감 기차 (IOI17_train)C++20
5 / 100
3 ms840 KiB
#include "train.h" #include <bits/stdc++.h> using namespace std; #define sig signed #define int long long #define arr array #define vec vector const int N = 5e3 + 5; int n, m; arr<bool, N> a, ch; arr<bool, N> cyc, lst; vec<int> a_wn, b_wn; vec<sig> who_wins(vec<sig> _a, vec<sig> _ch, vec<sig> _u, vec<sig> _v) { n = _a.size(), m = _u.size(); for (int u = 1; u <= n; u++) a[u] = _a[u - 1], ch[u] = _ch[u - 1]; lst.fill(true); for (int i = 1; i <= m; i++) { int u = _u[i - 1] + 1, v = _v[i - 1] + 1; if (u == v) cyc[u] = true; else lst[u] = false; } for (int u = 1; u <= n; u++) { if (cyc[u] && ch[u] && a[u]) a_wn.push_back(u); if (cyc[u] && ch[u] && lst[u] && !a[u]) a_wn.push_back(u); if (cyc[u] && !ch[u] && !a[u]) b_wn.push_back(u); if (cyc[u] && !ch[u] && lst[u] && a[u]) b_wn.push_back(u); } vec<sig> ans; for (int u = 1; u <= n; u++) { int i = lower_bound(a_wn.begin(), a_wn.end(), u) - a_wn.begin(); int j = lower_bound(b_wn.begin(), b_wn.end(), u) - b_wn.begin(); if (i == a_wn.size()) ans.push_back(0); else if (j == b_wn.size()) ans.push_back(1); else if (a_wn[i] < b_wn[j]) ans.push_back(1); else ans.push_back(0); } 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...