답안 #827296

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
827296 2023-08-16T10:41:35 Z tranxuanbach 장난감 기차 (IOI17_train) C++17
5 / 100
6 ms 1500 KB
#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);
}
# 결과 실행 시간 메모리 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
# 결과 실행 시간 메모리 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 -
# 결과 실행 시간 메모리 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 -
# 결과 실행 시간 메모리 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 -
# 결과 실행 시간 메모리 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 -
# 결과 실행 시간 메모리 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 -