답안 #778491

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
778491 2023-07-10T11:11:17 Z I_Love_EliskaM_ 장난감 기차 (IOI17_train) C++14
16 / 100
791 ms 2004 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 dfs(int u) {
	if (vis[u]) return 1;
	vis[u]=1;
	int z=0;
	for(auto&v:adj[u]) if (no[v]) continue; else z|=dfs(v);
	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;
	forn(i,m) adj[u[i]].pb(v[i]);
	forn(i,n) no[i]=r[i];
	forn(i,n) {
		forn(i,n) vis[i]=0;
		ans[i]=dfs(i);
	}
	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 724 KB Output is correct
6 Correct 2 ms 724 KB Output is correct
7 Correct 3 ms 724 KB Output is correct
8 Correct 2 ms 724 KB Output is correct
9 Correct 2 ms 724 KB Output is correct
10 Correct 2 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 116 ms 1512 KB Output is correct
2 Correct 120 ms 1484 KB Output is correct
3 Correct 136 ms 1436 KB Output is correct
4 Correct 705 ms 1364 KB Output is correct
5 Correct 569 ms 1380 KB Output is correct
6 Correct 440 ms 1308 KB Output is correct
7 Correct 206 ms 1396 KB Output is correct
8 Correct 190 ms 1272 KB Output is correct
9 Correct 171 ms 1252 KB Output is correct
10 Correct 259 ms 1240 KB Output is correct
11 Correct 219 ms 1204 KB Output is correct
12 Correct 20 ms 1204 KB Output is correct
13 Correct 769 ms 1408 KB Output is correct
14 Correct 791 ms 1408 KB Output is correct
15 Correct 791 ms 1416 KB Output is correct
16 Correct 743 ms 1416 KB Output is correct
17 Correct 771 ms 1404 KB Output is correct
18 Correct 274 ms 1288 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 2004 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 3 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 724 KB Output is correct
6 Correct 2 ms 724 KB Output is correct
7 Correct 3 ms 724 KB Output is correct
8 Correct 2 ms 724 KB Output is correct
9 Correct 2 ms 724 KB Output is correct
10 Correct 2 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 -