답안 #778503

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
778503 2023-07-10T11:23:22 Z I_Love_EliskaM_ 장난감 기차 (IOI17_train) C++14
16 / 100
2000 ms 1508 KB
#include "train.h"
#include <bits/stdc++.h>
using namespace std;
#define forn(i,n) for(int i=0;i<n;++i)
#define pb push_back
#define ll long long

vector<int> p1(vector<int>a,vector<int>r,vector<int>u,vector<int>v) {
	int n=a.size(), m=u.size();
	vector<int> s(n);
	vector<int> f(n);
	vector<int> ans(n);
	forn(i,m) if (u[i]==v[i]) s[u[i]]=1;
	forn(i,m) if (u[i]!=v[i]) f[u[i]]=1;
	int now=0;
	for (int i=n-1; i>=0; --i) {
		if (s[i]) {
			if (now) {
				if (!a[i]) {
					if (!r[i]) now=0;
				} else {
					if (f[i]) now=1;
					else now = r[i];
				}
			} else {
				if (a[i]) {
					if (r[i]) now=1;
				} else {
					if (f[i]) now=0;
					else now = r[i];
				}
			}
		}
		ans[i]=now;
	}
	return ans;
}

const int N=5555;
vector<int> adj[N];
int vis[N];
int ok[N];
int dfs(int u, int s) {
	if (vis[u] && u==s) return 1;
	if (vis[u]) return 0;
	vis[u]=1;
	int z=0;
	for(auto&v:adj[u]) z|=dfs(v,s);
	return z;
}
int dfs2(int u) {
	if (ok[u]) return 1;
	if (vis[u]) return 0;
	vis[u]=1;
	int z=0;
	for(auto&v:adj[u]) z|=dfs2(v);
	return z;
}
vector<int> p3(vector<int>a,vector<int>r,vector<int>u,vector<int>v) {
	int n=a.size(), m=u.size();
	vector<int> ans(n);
	forn(i,m) adj[u[i]].pb(v[i]);
	forn(i,n) if (r[i]) {
		forn(j,n) vis[j]=0;
		int q=dfs(i,i);
		ok[i]=q;
	}
	forn(i,n) {
		forn(j,n) vis[j]=0;
		int q=dfs2(i);
		ans[i]=q;
	}
	return ans;
}

int no[N];
int dfs3(int u, int x) {
	//cout<<"! "<<u<<' '<<x<<' '<<vis[u]<<'\n';
	if (vis[u]==x) return 1;
	else if (vis[u]) return 0;
	vis[u]=x;
	int z=0;
	for(auto&v:adj[u]) {
		/*
		if (v==u) {
			if (no[u]) continue;
			else return 1;
		} else {
			z|=dfs3(v,x+no[u]);
		}
		*/
		z|=dfs3(v,x+no[u]);
	}
	vis[u]=0;
	return z;
}
vector<int> p4(vector<int>a,vector<int>r,vector<int>u,vector<int>v) {
	int n=a.size(), m=u.size();
	vector<int> ans(n);
	forn(i,m) adj[u[i]].pb(v[i]);
	forn(i,n) no[i]=r[i];
	forn(i,n) {
		ans[i]=!dfs3(i,1);
	}
	return ans;
}

vector<int> who_wins(vector<int>a,vector<int>r,vector<int>u,vector<int>v) {

	int n=a.size(), m=u.size();
	int z=1;
	forn(i,m) z&=(u[i]==v[i]) || (v[i]==(u[i]+1));
	if (z) {
		return p1(a,r,u,v);
	}
	z=1;
	forn(i,n) z&=a[i];
	if (z) return p3(a,r,u,v);
	forn(i,n) z|=a[i];
	if (!z) return p4(a,r,u,v);
	exit(1);

}
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 724 KB Output is correct
2 Correct 2 ms 724 KB Output is correct
3 Correct 2 ms 724 KB Output is correct
4 Correct 2 ms 724 KB Output is correct
5 Correct 2 ms 660 KB Output is correct
6 Correct 2 ms 724 KB Output is correct
7 Correct 2 ms 724 KB Output is correct
8 Correct 2 ms 724 KB Output is correct
9 Correct 3 ms 724 KB Output is correct
10 Correct 2 ms 724 KB Output is correct
11 Correct 3 ms 724 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 340 KB Execution failed because the return code was nonzero
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 133 ms 1508 KB Output is correct
2 Correct 137 ms 1500 KB Output is correct
3 Correct 145 ms 1456 KB Output is correct
4 Correct 706 ms 1400 KB Output is correct
5 Correct 577 ms 1372 KB Output is correct
6 Correct 476 ms 1308 KB Output is correct
7 Correct 230 ms 1276 KB Output is correct
8 Correct 198 ms 1272 KB Output is correct
9 Correct 191 ms 1272 KB Output is correct
10 Correct 258 ms 1252 KB Output is correct
11 Correct 233 ms 1224 KB Output is correct
12 Correct 20 ms 1108 KB Output is correct
13 Correct 763 ms 1428 KB Output is correct
14 Correct 799 ms 1416 KB Output is correct
15 Correct 745 ms 1412 KB Output is correct
16 Correct 731 ms 1408 KB Output is correct
17 Correct 744 ms 1364 KB Output is correct
18 Correct 258 ms 1164 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 2082 ms 1244 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 724 KB Execution failed because the return code was nonzero
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 724 KB Output is correct
2 Correct 2 ms 724 KB Output is correct
3 Correct 2 ms 724 KB Output is correct
4 Correct 2 ms 724 KB Output is correct
5 Correct 2 ms 660 KB Output is correct
6 Correct 2 ms 724 KB Output is correct
7 Correct 2 ms 724 KB Output is correct
8 Correct 2 ms 724 KB Output is correct
9 Correct 3 ms 724 KB Output is correct
10 Correct 2 ms 724 KB Output is correct
11 Correct 3 ms 724 KB Output is correct
12 Runtime error 1 ms 340 KB Execution failed because the return code was nonzero
13 Halted 0 ms 0 KB -