제출 #144299

#제출 시각아이디문제언어결과실행 시간메모리
144299emilemTenis (COI19_tenis)C++14
21 / 100
82 ms6976 KiB
#include <iostream> #include <vector> using namespace std; vector<int> ranking[4], rankAt[4]; vector<int> tree, lazy; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int n, q; cin >> n >> q; ranking[1] = ranking[2] = ranking[3] = vector<int>(n + 1); rankAt[1] = rankAt[2] = rankAt[3] = vector<int>(n + 1); for (int p = 1; p <= 3; ++p) for (int i = 1; i <= n; ++i) { cin >> ranking[p][i]; rankAt[p][ranking[p][i]] = i; } vector<int> worst(n + 1, 0); for (int p = 1; p <= 3; ++p) for (int i = 1; i <= n; ++i) worst[ranking[p][i]] = max(worst[ranking[p][i]], i); vector<int> f(n + 1); for (int i = 1; i <= n; ++i) ++f[worst[i]]; for (int i = 2; i <= n; ++i) f[i] += f[i - 1]; /* for (int i = 1; i <= n; ++i) cout << worst[i] << ' '; cout << endl; for (int i = 1; i <= n; ++i) cout << f[i] << ' '; cout << endl; */ tree.resize(n * 4); lazy.resize(n * 4); int winnerBound = 0; for (int i = 1; i <= n; ++i) if (f[i] == i) { winnerBound = i; break; } while (q--) { int type, man; cin >> type >> man; cout << (worst[man] <= winnerBound ? "DA\n" : "NE\n"); } char I; cin >> I; }
#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...