제출 #1242195

#제출 시각아이디문제언어결과실행 시간메모리
1242195thelegendary08장난감 기차 (IOI17_train)C++17
5 / 100
3 ms840 KiB
#include "train.h"
#include<bits/stdc++.h>
#define int long long
#define pb push_back
#define mp make_pair
#define vb vector<bool>
#define vi vector<int>
#define vvi vector<vi>
#define pii pair<int,int>
#define vpii vector<pii>
#define f0r(i,n) for(int i = 0; i<n; i++)
#define FOR(i, k, n) for(int i = k; i<n; i++)
const int mxn = 5e3 + 5;
using namespace std;
vvi adj(mxn);
int n, m;
std::vector<signed> who_wins(std::vector<signed> a, std::vector<signed> r, std::vector<signed> u, std::vector<signed> v) {
	n = a.size(); m = u.size();
	vi nxt(n);
	vi cyc(n);
	f0r(i, m){
		if(u[i] + 1 == v[i])nxt[u[i]] = 1;
		else cyc[u[i]] = 1;
	}
	
	vector<signed> ans(n);
	f0r(tt, n){
		int x = tt;
		if(cyc[x] && a[x] == 1 && r[x] == 1){
			ans[tt] = 1; continue;
		}
		if(cyc[x] && a[x] == 0 && r[x] == 0){
			ans[tt] = 0; continue;
		}
		bool ok = 0;
		while(nxt[x]){
			x++;
			if(cyc[x] && a[x] == 1 && r[x] == 1){
				ans[tt] = 1; ok = 1; break;
			}
			if(cyc[x] && a[x] == 0 && r[x] == 0){
				ans[tt] = 0; ok = 1; break;
			}
		}
		if(ok)continue;
		if(cyc[x] && r[x])ans[tt] = 1;
		else ans[tt] = 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...