답안 #778499

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
778499 2023-07-10T11:18:11 Z I_Love_EliskaM_ 장난감 기차 (IOI17_train) C++14
16 / 100
806 ms 1740 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) {
	if (vis[u]==x) return 1;
	vis[u]=x;
	int z=0;
	for(auto&v:adj[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]=!dfs(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 736 KB Output is correct
2 Correct 3 ms 844 KB Output is correct
3 Correct 4 ms 852 KB Output is correct
4 Correct 3 ms 736 KB Output is correct
5 Correct 3 ms 852 KB Output is correct
6 Correct 3 ms 852 KB Output is correct
7 Correct 3 ms 832 KB Output is correct
8 Correct 2 ms 852 KB Output is correct
9 Correct 3 ms 828 KB Output is correct
10 Correct 3 ms 724 KB Output is correct
11 Correct 2 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 119 ms 1664 KB Output is correct
2 Correct 123 ms 1608 KB Output is correct
3 Correct 138 ms 1492 KB Output is correct
4 Correct 683 ms 1520 KB Output is correct
5 Correct 586 ms 1492 KB Output is correct
6 Correct 465 ms 1604 KB Output is correct
7 Correct 203 ms 1488 KB Output is correct
8 Correct 189 ms 1492 KB Output is correct
9 Correct 178 ms 1556 KB Output is correct
10 Correct 258 ms 1440 KB Output is correct
11 Correct 225 ms 1364 KB Output is correct
12 Correct 20 ms 1364 KB Output is correct
13 Correct 776 ms 1616 KB Output is correct
14 Correct 806 ms 1616 KB Output is correct
15 Correct 802 ms 1724 KB Output is correct
16 Correct 750 ms 1620 KB Output is correct
17 Correct 803 ms 1740 KB Output is correct
18 Correct 264 ms 1176 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 1236 KB 3rd lines differ - on the 1st token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 5 ms 884 KB Execution failed because the return code was nonzero
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 736 KB Output is correct
2 Correct 3 ms 844 KB Output is correct
3 Correct 4 ms 852 KB Output is correct
4 Correct 3 ms 736 KB Output is correct
5 Correct 3 ms 852 KB Output is correct
6 Correct 3 ms 852 KB Output is correct
7 Correct 3 ms 832 KB Output is correct
8 Correct 2 ms 852 KB Output is correct
9 Correct 3 ms 828 KB Output is correct
10 Correct 3 ms 724 KB Output is correct
11 Correct 2 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 -