Submission #298160

# Submission time Handle Problem Language Result Execution time Memory
298160 2020-09-12T12:58:26 Z pit4h Amusement Park (JOI17_amusement_park) C++14
70 / 100
51 ms 7100 KB
#include "Joi.h"
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int _N = 1e4+1, _B = 60;
vector<int> g[_N];
bool vis[_N];
int dep[_N], par[_N];
vector<int> roots;
ll X;
void dfs(int x) {
	vis[x] = 1;
	if(dep[x]%_B==0) {
		roots.push_back(x);
	}
	for(int i: g[x]) {
		if(!vis[i]) {
			par[i] = x;
			dep[i] = dep[x]+1;
			dfs(i);
		}
	}
}
void set_board(int x, int &bit) {
	vis[x] = 1;	
	if((X&(1LL<<bit))>0) {
		MessageBoard(x, 1);
	}
	else {
		MessageBoard(x, 0);
	}
	if(bit>=_B-1) return;
	for(int i: g[x]) {
		if(!vis[i] && par[i] == x) {
			bit++;
			if(dep[i]%_B!=0 && bit<_B) set_board(i, bit);
		}
	}
}
void Joi(int N, int M, int A[], int B[], ll _X, int T) {
	// MessageBoard();
	X = _X;
	for(int i=0; i<M; ++i) {
		g[A[i]].push_back(B[i]);
		g[B[i]].push_back(A[i]);
	}
	for(int i=0; i<N; ++i) {
		sort(g[i].begin(), g[i].end());
	}
	dfs(0);
	for(int i=0; i<N; ++i) vis[i] = 0;
	for(int i: roots) {
		int bit = 0;
		set_board(i, bit);
	}
	for(int i=0; i<N; ++i) {
		if(!vis[i]) {
			MessageBoard(i, 1);
		}
	}
}
#include "Ioi.h"
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int __N = 1e4+1;
const int bits = 60;
void _dfs(int x, vector<int>& vis, vector<vector<int>>& g, vector<int>& par, vector<int>& dep) {
	vis[x] = 1;
	for(int i: g[x]) {
		if(!vis[i]) {
			par[i] = x;
			dep[i] = dep[x]+1;
			_dfs(i, vis, g, par, dep);
		}
	}
}
int cnt;
map<int, int> Map[__N];
int cur_pos;
int mv(int x) {
	cnt++;
	if(!Map[cur_pos][x] || cnt > 200) assert(false);
	cur_pos = x;
	return Move(x);
}
void get_X(int x, int v, int& bit, ll& X, vector<int>& vis, vector<vector<int>>& g, vector<int>& par) { 
	vis[x] = 1;
	X += (ll)v * (1LL<<bit);
	if(bit==bits-1) return;
	for(int i: g[x]) {
		if(!vis[i] && par[i]==x) {
			bit++;
			if(bit < bits) get_X(i, mv(i), bit, X, vis, g, par);
		}
	}
	if(par[x] != x && bit < bits-1) {
		mv(par[x]);
	}
}	
long long Ioi(int N, int M, int A[], int B[], int P, int V, int T) {
	vector<vector<int>> g(N);
	vector<int> vis(N), par(N), dep(N);
	for(int i=0; i<M; ++i) {
		Map[A[i]][B[i]] = 1;
		Map[B[i]][A[i]] = 1;
		g[A[i]].push_back(B[i]);
		g[B[i]].push_back(A[i]);
	}
	for(int i=0; i<N; ++i) {
		sort(g[i].begin(), g[i].end());
	}
	_dfs(0, vis, g, par, dep);
	cur_pos = P;
	while(dep[P]%bits != 0) {
		P = par[P];
		V = mv(P);
	}
	for(int i=0; i<N; ++i) {
		vis[i] = 0;
	}
	int bit = 0;
	ll X = 0;
	get_X(P, V, bit, X, vis, g, par);
	return X;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 1800 KB Output is correct
2 Correct 2 ms 1544 KB Output is correct
3 Correct 2 ms 1680 KB Output is correct
4 Correct 2 ms 1796 KB Output is correct
5 Correct 2 ms 1792 KB Output is correct
6 Correct 3 ms 1544 KB Output is correct
7 Correct 2 ms 1552 KB Output is correct
8 Correct 2 ms 1680 KB Output is correct
9 Correct 2 ms 1780 KB Output is correct
10 Correct 2 ms 1544 KB Output is correct
11 Correct 9 ms 2320 KB Output is correct
12 Correct 3 ms 1660 KB Output is correct
13 Correct 3 ms 1784 KB Output is correct
14 Correct 3 ms 1780 KB Output is correct
15 Correct 3 ms 1776 KB Output is correct
16 Correct 2 ms 1776 KB Output is correct
17 Correct 2 ms 1680 KB Output is correct
18 Correct 2 ms 1632 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 40 ms 6756 KB Output is correct
2 Correct 49 ms 7048 KB Output is correct
3 Correct 47 ms 7100 KB Output is correct
4 Correct 23 ms 4396 KB Output is correct
5 Correct 23 ms 5104 KB Output is correct
6 Correct 26 ms 4652 KB Output is correct
7 Correct 24 ms 4916 KB Output is correct
8 Correct 23 ms 5132 KB Output is correct
9 Correct 23 ms 4908 KB Output is correct
10 Correct 28 ms 4528 KB Output is correct
11 Correct 25 ms 4732 KB Output is correct
12 Correct 19 ms 4332 KB Output is correct
13 Correct 22 ms 4244 KB Output is correct
14 Correct 23 ms 4256 KB Output is correct
15 Correct 26 ms 4420 KB Output is correct
16 Correct 28 ms 4396 KB Output is correct
17 Correct 25 ms 4584 KB Output is correct
18 Correct 30 ms 4524 KB Output is correct
19 Correct 26 ms 4408 KB Output is correct
20 Correct 19 ms 5036 KB Output is correct
21 Correct 20 ms 5024 KB Output is correct
22 Correct 24 ms 4652 KB Output is correct
23 Correct 25 ms 5128 KB Output is correct
24 Correct 23 ms 4780 KB Output is correct
25 Correct 26 ms 5148 KB Output is correct
26 Correct 23 ms 4908 KB Output is correct
27 Correct 23 ms 5120 KB Output is correct
28 Correct 27 ms 5048 KB Output is correct
29 Correct 20 ms 4628 KB Output is correct
30 Correct 24 ms 4768 KB Output is correct
31 Correct 2 ms 1672 KB Output is correct
32 Correct 2 ms 1672 KB Output is correct
33 Correct 2 ms 1680 KB Output is correct
34 Correct 2 ms 1544 KB Output is correct
35 Correct 2 ms 1672 KB Output is correct
36 Correct 2 ms 1544 KB Output is correct
37 Correct 2 ms 1804 KB Output is correct
38 Correct 2 ms 1544 KB Output is correct
39 Correct 3 ms 1664 KB Output is correct
40 Correct 2 ms 1792 KB Output is correct
41 Correct 2 ms 1544 KB Output is correct
42 Correct 2 ms 1672 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 1540 KB Output is correct
2 Correct 2 ms 1740 KB Output is correct
3 Incorrect 2 ms 1544 KB Wrong Answer [7]
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Partially correct 43 ms 6928 KB Partially correct
2 Correct 44 ms 7080 KB Output is correct
3 Correct 40 ms 7068 KB Output is correct
4 Correct 22 ms 4544 KB Output is correct
5 Correct 23 ms 5496 KB Output is correct
6 Partially correct 27 ms 5020 KB Partially correct
7 Correct 26 ms 4996 KB Output is correct
8 Correct 24 ms 4780 KB Output is correct
9 Correct 27 ms 4884 KB Output is correct
10 Correct 26 ms 4528 KB Output is correct
11 Correct 28 ms 4756 KB Output is correct
12 Correct 19 ms 4244 KB Output is correct
13 Partially correct 22 ms 4424 KB Partially correct
14 Partially correct 26 ms 4256 KB Partially correct
15 Correct 26 ms 4396 KB Output is correct
16 Correct 26 ms 4396 KB Output is correct
17 Correct 28 ms 4484 KB Output is correct
18 Partially correct 22 ms 4536 KB Partially correct
19 Partially correct 27 ms 4404 KB Partially correct
20 Partially correct 19 ms 5052 KB Partially correct
21 Correct 18 ms 5092 KB Output is correct
22 Correct 29 ms 5068 KB Output is correct
23 Correct 26 ms 4904 KB Output is correct
24 Partially correct 27 ms 5192 KB Partially correct
25 Partially correct 23 ms 5116 KB Partially correct
26 Correct 25 ms 4968 KB Output is correct
27 Correct 24 ms 5088 KB Output is correct
28 Correct 27 ms 4780 KB Output is correct
29 Correct 26 ms 4828 KB Output is correct
30 Partially correct 27 ms 4768 KB Partially correct
# Verdict Execution time Memory Grader output
1 Correct 51 ms 6756 KB Output is correct
2 Incorrect 45 ms 7080 KB Output isn't correct
3 Halted 0 ms 0 KB -