이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "train.h"
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define For(i, l, r) for (auto i = (l); i < (r); i++)
#define ForE(i, l, r) for (auto i = (l); i <= (r); i++)
#define FordE(i, l, r) for (auto i = (l); i >= (r); i--)
#define bend(a) (a).begin(), (a).end()
#define isz(a) ((int)(a).size())
struct edge_t{
int from, to;
};
const int N = 5e3 + 5, M = 2e4 + 5;
int n, m;
int a[N]; // true = A, false = B
bool b[N]; // is charging station
edge_t edge[M];
vector <int> adj[N], radj[N];
namespace subtask1{
bool check(){
For(i, 0, m){
if (not (edge[i].from == edge[i].to or edge[i].from + 1 == edge[i].to)){
return false;
}
}
return true;
}
vector <int> solve(){
vector <bool> has_self_loop(n, false), has_next_edge(n, false);
For(i, 0, m){
if (edge[i].from == edge[i].to){
has_self_loop[edge[i].from] = true;
}
else{
has_next_edge[edge[i].from] = true;
}
}
vector <int> ans(n);
ans[n - 1] = b[n - 1];
FordE(u, n - 2, 0){
if (not has_self_loop[u]){
ans[u] = ans[u + 1];
continue;
}
if (a[u] and (b[u] or (has_next_edge[u] and ans[u + 1]))){
ans[u] = a[u];
}
else if (not a[u] and (not b[u] or (has_next_edge[u] and not ans[u + 1]))){
ans[u] = a[u];
}
else{
ans[u] = a[u] ^ 1;
}
}
return ans;
}
}
vector <int> who_wins(vector <int> _a, vector <int> _r, vector <int> _u, vector <int> _v){
n = isz(_a); m = isz(_u);
For(u, 0, n){
a[u] = _a[u];
b[u] = _r[u];
}
For(i, 0, m){
int u = _u[i], v = _v[i];
edge[i] = edge_t{u, v};
adj[u].emplace_back(i);
radj[v].emplace_back(i);
}
if (subtask1::check()){
return subtask1::solve();
}
return vector <int>(n);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |