#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 |
1 |
Correct |
3 ms |
1108 KB |
Output is correct |
2 |
Correct |
3 ms |
1108 KB |
Output is correct |
3 |
Correct |
3 ms |
1108 KB |
Output is correct |
4 |
Correct |
3 ms |
1196 KB |
Output is correct |
5 |
Correct |
3 ms |
1108 KB |
Output is correct |
6 |
Correct |
3 ms |
1100 KB |
Output is correct |
7 |
Correct |
3 ms |
1108 KB |
Output is correct |
8 |
Correct |
3 ms |
1200 KB |
Output is correct |
9 |
Correct |
3 ms |
1108 KB |
Output is correct |
10 |
Correct |
3 ms |
1108 KB |
Output is correct |
11 |
Correct |
3 ms |
1072 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
1 ms |
468 KB |
3rd lines differ - on the 2nd token, expected: '1', found: '0' |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
1492 KB |
Output is correct |
2 |
Correct |
5 ms |
1500 KB |
Output is correct |
3 |
Correct |
5 ms |
1492 KB |
Output is correct |
4 |
Incorrect |
5 ms |
1492 KB |
3rd lines differ - on the 1st token, expected: '1', found: '0' |
5 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
5 ms |
1340 KB |
3rd lines differ - on the 1st token, expected: '1', found: '0' |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
6 ms |
1492 KB |
3rd lines differ - on the 1st token, expected: '1', found: '0' |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
1108 KB |
Output is correct |
2 |
Correct |
3 ms |
1108 KB |
Output is correct |
3 |
Correct |
3 ms |
1108 KB |
Output is correct |
4 |
Correct |
3 ms |
1196 KB |
Output is correct |
5 |
Correct |
3 ms |
1108 KB |
Output is correct |
6 |
Correct |
3 ms |
1100 KB |
Output is correct |
7 |
Correct |
3 ms |
1108 KB |
Output is correct |
8 |
Correct |
3 ms |
1200 KB |
Output is correct |
9 |
Correct |
3 ms |
1108 KB |
Output is correct |
10 |
Correct |
3 ms |
1108 KB |
Output is correct |
11 |
Correct |
3 ms |
1072 KB |
Output is correct |
12 |
Incorrect |
1 ms |
468 KB |
3rd lines differ - on the 2nd token, expected: '1', found: '0' |
13 |
Halted |
0 ms |
0 KB |
- |