Submission #790115

# Submission time Handle Problem Language Result Execution time Memory
790115 2023-07-22T10:45:55 Z fatemetmhr Toy Train (IOI17_train) C++17
0 / 100
25 ms 24252 KB
//  ~ Be Name Khoda ~  //

#include "train.h"
#include <bits/stdc++.h>
//#pragma GCC optimize ("O3")
//#pragma GCC target("avx2")
//#pragma GCC optimize("unroll-loops,Ofast")

using namespace std;

typedef long long ll;

#define pb       push_back
#define mp       make_pair
#define all(x)   x.begin(), x.end()
#define fi       first
#define se       second

const int maxn  =  1e6   + 10;
const int maxn5 =  5e5   + 10;
const int maxnt =  1.2e6 + 10;
const int maxn3 =  1e3   + 10;
const int mod   =  1e9   + 7;
const ll  inf   =  1e18;

int cnt[maxn5], cmp[maxn5];
int num = 0;
vector <int> adj[maxn5], jda[maxn5], ver;
bool mark[maxn5], loop[maxn5], good[maxn5], rem[maxn5];

void dfs1(int v){
	mark[v] = true;
	for(auto u : adj[v]) if(!mark[u] && !rem[u])
		dfs1(u);
	ver.pb(v);
}

void dfs2(int v){
	mark[v] = true;
	cmp[v] = num;
	cnt[num]++;
	for(auto u : jda[v]) if(!mark[u] && !rem[u])
		dfs2(u);

}

std::vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) {
	int n = a.size(), m = u.size();
	for(int i = 0; i < m; i++){
		if(u[i] == v[i])
			loop[u[i]] = true;
	}
	vector <int> ans;
	for(int j = 0; j < n; j++){
		bool re = r[n - 1];
		for(int i = j; i < n; i++) if(loop[i]){
			if(r[i] && a[i]){
				re = true;
				break;
			}
			if(!r[i] && !a[i]){
				re = false;
				break;
			}
		}
		ans.pb(re);

	}
	return ans;
	for(int i = 0; i < n; i++) if(r[i])
		rem[i] = true;

	for(int i = 0; i < n; i++) if(!mark[i] && !rem[i])
		dfs1(i);
	reverse(all(ver));
	memset(mark, false, sizeof mark);
	for(auto u : ver) if(!mark[u] && !rem[u]){
		dfs2(u);
		num++;
	}
	for(int i = 0; i < n; i++) if(!rem[i] && (loop[i] || cnt[cmp[i]] > 1))
		good[i] = true;
	for(int i = 0; i < n; i++) if(r[i])
		rem[i] = false;
	for(int i = 0; i < n; i++){
		memset(mark, false, sizeof mark);
		ver.clear();
		dfs1(i);
		bool re = false;
		for(int j = 0; j < n; j++) if(good[j] && mark[j])
			re = true;
		ans.pb(re);
	}
	return ans;

}
# Verdict Execution time Memory Grader output
1 Correct 14 ms 24020 KB Output is correct
2 Correct 14 ms 24072 KB Output is correct
3 Incorrect 14 ms 24148 KB 3rd lines differ - on the 355th token, expected: '1', found: '0'
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 10 ms 23700 KB 3rd lines differ - on the 2nd token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 24 ms 24208 KB Output is correct
2 Correct 25 ms 24252 KB Output is correct
3 Correct 22 ms 24196 KB Output is correct
4 Incorrect 22 ms 24196 KB 3rd lines differ - on the 1st token, expected: '1', found: '0'
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 17 ms 24148 KB 3rd lines differ - on the 1st token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 18 ms 24252 KB 3rd lines differ - on the 1st token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 14 ms 24020 KB Output is correct
2 Correct 14 ms 24072 KB Output is correct
3 Incorrect 14 ms 24148 KB 3rd lines differ - on the 355th token, expected: '1', found: '0'
4 Halted 0 ms 0 KB -