답안 #778505

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
778505 2023-07-10T11:24:37 Z I_Love_EliskaM_ 장난감 기차 (IOI17_train) C++14
16 / 100
745 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]) {
		z|=dfs3(v,x+no[u]);
	}
	vis[u]=-1;
	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) {
		forn(j,n) vis[j]=0;
		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 4 ms 724 KB Output is correct
3 Correct 3 ms 724 KB Output is correct
4 Correct 2 ms 724 KB Output is correct
5 Correct 3 ms 724 KB Output is correct
6 Correct 3 ms 724 KB Output is correct
7 Correct 3 ms 724 KB Output is correct
8 Correct 3 ms 724 KB Output is correct
9 Correct 4 ms 724 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 0 ms 340 KB Execution failed because the return code was nonzero
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 113 ms 1492 KB Output is correct
2 Correct 130 ms 1476 KB Output is correct
3 Correct 138 ms 1456 KB Output is correct
4 Correct 690 ms 1416 KB Output is correct
5 Correct 551 ms 1388 KB Output is correct
6 Correct 434 ms 1308 KB Output is correct
7 Correct 205 ms 1276 KB Output is correct
8 Correct 185 ms 1264 KB Output is correct
9 Correct 169 ms 1260 KB Output is correct
10 Correct 245 ms 1236 KB Output is correct
11 Correct 211 ms 1204 KB Output is correct
12 Correct 19 ms 1196 KB Output is correct
13 Correct 743 ms 1408 KB Output is correct
14 Correct 745 ms 1412 KB Output is correct
15 Correct 739 ms 1416 KB Output is correct
16 Correct 731 ms 1420 KB Output is correct
17 Correct 741 ms 1408 KB Output is correct
18 Correct 259 ms 1156 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 677 ms 1252 KB Output is correct
2 Correct 122 ms 1364 KB Output is correct
3 Correct 234 ms 1496 KB Output is correct
4 Correct 327 ms 1492 KB Output is correct
5 Correct 256 ms 1508 KB Output is correct
6 Incorrect 220 ms 1496 KB 3rd lines differ - on the 1524th token, expected: '0', found: '1'
7 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 4 ms 724 KB Output is correct
3 Correct 3 ms 724 KB Output is correct
4 Correct 2 ms 724 KB Output is correct
5 Correct 3 ms 724 KB Output is correct
6 Correct 3 ms 724 KB Output is correct
7 Correct 3 ms 724 KB Output is correct
8 Correct 3 ms 724 KB Output is correct
9 Correct 4 ms 724 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 0 ms 340 KB Execution failed because the return code was nonzero
13 Halted 0 ms 0 KB -