답안 #795510

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
795510 2023-07-27T10:42:01 Z fatemetmhr 장난감 기차 (IOI17_train) C++17
11 / 100
66 ms 24936 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], q[maxn5], cntkeep[maxn5];
vector <int> adj[maxn5], jda[maxn5], ret;
bool mark[maxn5], good[maxn5], keep[maxn5];
int n, m;
 
std::vector<int> who_wins(std::vector<int> a, std::vector<int> ch, std::vector<int> u, std::vector<int> v) {
	n = a.size(); 
	m = u.size();
 	for(int i = 0; i < m; i++){
 		adj[u[i]].pb(v[i]);
 		jda[v[i]].pb(u[i]);
 		cnt[u[i]]++;
 	}
 	while(true){
	 	int x = -1;
		for(int i = 0; i < n; i++){
			keep[i] = good[i];
			cntkeep[i] = cnt[i];
		}
		for(int i = 0; i < n; i++) if(!good[i] && !ch[i])
			x = i;
		if(x == -1)
			break;
	 	int l = 0, r = 0;
	 	for(auto u : jda[x]) if(!good[u] && !ch[u]){
	 		if(!a[u]){
	 			q[r++] = u;
	 			good[u] = true;
	 		}
	 		else if(cnt[u] > 1)
	 			cnt[u]--;
	 		else{
	 			q[r++] = u;
	 			good[u] = true;
	 		}
	 	}
	 	while(l < r){
	 		int v = q[l++];
		 	for(auto u : jda[v]) if(!good[u] && !ch[u]){
		 		if(!a[u]){
		 			q[r++] = u;
		 			good[u] = true;
		 		}
		 		else if(cnt[u] > 1)
		 			cnt[u]--;
		 		else{
		 			q[r++] = u;
		 			good[u] = true;
		 		}
		 	}
	 	}
	 	if(!good[x]){
	 		ch[x] = true;
	 		for(int i = 0; i < n; i++){
	 			good[i] = keep[i];
	 			cnt[i] = cntkeep[i];
	 		}
	 	}
 	}
	int l = 0, r = 0;
	for(int i = 0; i < n; i++) if(good[i])
		q[r++] = i;
	while(l < r){
		int v = q[l++];
	 	for(auto u : jda[v]) if(!good[u]){
	 		if(!a[u]){
	 			q[r++] = u;
	 			good[u] = true;
	 		}
	 		else if(cnt[u] > 1)
	 			cnt[u]--;
	 		else{
	 			q[r++] = u;
	 			good[u] = true;
	 		}
	 	}
	 }

	for(int i = 0; i < n; i++)
		ret.pb(!good[i]);
 	return ret;
}















# 결과 실행 시간 메모리 Grader output
1 Incorrect 25 ms 24404 KB 3rd lines differ - on the 1st token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 10 ms 23800 KB Output is correct
2 Correct 11 ms 23804 KB Output is correct
3 Correct 11 ms 23764 KB Output is correct
4 Incorrect 11 ms 23764 KB 3rd lines differ - on the 1st token, expected: '0', found: '1'
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 36 ms 24936 KB 3rd lines differ - on the 1st token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 17 ms 24728 KB Output is correct
2 Correct 55 ms 24780 KB Output is correct
3 Correct 45 ms 24868 KB Output is correct
4 Correct 29 ms 24928 KB Output is correct
5 Correct 44 ms 24868 KB Output is correct
6 Correct 66 ms 24848 KB Output is correct
7 Correct 63 ms 24836 KB Output is correct
8 Correct 43 ms 24824 KB Output is correct
9 Correct 19 ms 24824 KB Output is correct
10 Correct 22 ms 24832 KB Output is correct
11 Correct 19 ms 24880 KB Output is correct
12 Correct 22 ms 24844 KB Output is correct
13 Correct 42 ms 24856 KB Output is correct
14 Correct 45 ms 24776 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 40 ms 24884 KB 3rd lines differ - on the 1st token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 25 ms 24404 KB 3rd lines differ - on the 1st token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -