Submission #1058129

# Submission time Handle Problem Language Result Execution time Memory
1058129 2024-08-14T08:38:03 Z ReLice Highway Tolls (IOI18_highway) C++17
90 / 100
142 ms 28348 KB
#include "highway.h"
#include <bits/stdc++.h>
#define ll long long
#define vll vector<ll>
#define pb push_back
#define pf push_front
#define sz size()
#define bc back()
#define pob pop_back()
#define pof pop_front()
#define fr first
#define sc second
using namespace std;
const ll N=2e5+7;
const ll inf=1e18;
vector<vector<array<ll,2>>> g(N), g2(N);
void find_pair(int N, std::vector<int> U, std::vector<int> V, int A, int B) {
	ll M = V.sz;
	ll s, t, rt;
	ll n = N;
	vll v, u;
	ll i;
	
	for(auto i : V) v.pb(i);
	for(auto i : U) u.pb(i);
	
	vector<int> w(M, 0);
	
	ll x = ask(w);
	
	for(i=0;i<M;i++){
		g[v[i]].pb({u[i], i});
		g[u[i]].pb({v[i], i});
	}
	
	{//getting vertex on the path
		ll l = 0, r = n;
		while(l + 1 < r){
			ll m = (l + r) / 2;
			
			if(r - l > 60000) m = 60000;
			
			w.assign(M, 0);
			
			for(i=0;i<m;i++){
				for(auto [to, r] : g[i]) w[r] = 1;
			}
			
			ll y = ask(w);
			
			if(y == x) l = m;
			else r = m;
		}
		
		rt = r - 1;
	}
	
	vll p(n), d(n);
	vll pr(n), tour;
	vector<vll> dd(n);
	
	auto bfs = [&](ll s){
		for(i=0;i<n;i++){
			dd[i].clear();
			d[i] = inf;
			pr[i] = p[i] = -1;
		}
		
		queue<ll> q;
		q.push(s);
		d[s] = 0;
		
		while(q.size()){
			ll x = q.front();
			q.pop();
			
			dd[d[x]].pb(x);
			
			for(auto [to, r] : g[x]){
				if(d[to] > d[x] + 1){
					d[to] = d[x] + 1 ;
					pr[to] = r;
					p[to] = x;
					q.push(to);
				}
			}
		}
		
		tour.clear();
		for(i=0;i<n;i++){
			for(auto j : dd[i]) tour.pb(j);
		}
	};
	
	vll path;
	auto calc = [&](ll n){
		ll l = 0, r = n;
		while(l + 1 < r){
			ll m = (l + r) / 2;
			
			//~ if(r - l > 60000) m = 60000;
			
			w.assign(M, 1);
			
			for(auto i : path) w[i] =0;
			
			//~ cout<<m<<endl;
			for(i=1;i<m;i++) {
				w[pr[tour[i]]] = 0;
				//~ cout<<v[pr[tour[i]]]<<' '<<u[pr[tour[i]]]<<endl;
			}
			
			ll y = ask(w);
				
			if(x == y) r = m;
			else l = m;
		}
		
		return r - 1;
	};
	
	bfs(rt);
	
	ll k = calc(n);
	s = tour[k];
	
	{
		ll x = s;
		while(x != rt){
			path.pb(pr[x]);
			x = p[x];
		}
	}
	
	t = tour[calc(k)];
	
	answer(s, t);
}


# Verdict Execution time Memory Grader output
1 Correct 2 ms 9816 KB Output is correct
2 Correct 2 ms 9816 KB Output is correct
3 Correct 3 ms 9816 KB Output is correct
4 Correct 4 ms 9816 KB Output is correct
5 Correct 3 ms 9816 KB Output is correct
6 Correct 2 ms 9860 KB Output is correct
7 Correct 3 ms 9816 KB Output is correct
8 Correct 2 ms 9816 KB Output is correct
9 Correct 2 ms 9816 KB Output is correct
10 Correct 3 ms 9816 KB Output is correct
11 Correct 2 ms 9816 KB Output is correct
12 Correct 3 ms 9816 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 9816 KB Output is correct
2 Correct 8 ms 11448 KB Output is correct
3 Correct 98 ms 24032 KB Output is correct
4 Correct 85 ms 24036 KB Output is correct
5 Correct 108 ms 24024 KB Output is correct
6 Correct 88 ms 24272 KB Output is correct
7 Correct 87 ms 24236 KB Output is correct
8 Correct 95 ms 24048 KB Output is correct
9 Correct 74 ms 24232 KB Output is correct
10 Correct 94 ms 24032 KB Output is correct
11 Correct 91 ms 24320 KB Output is correct
12 Correct 99 ms 24408 KB Output is correct
13 Correct 100 ms 24388 KB Output is correct
14 Correct 110 ms 24280 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 10 ms 11608 KB Output is correct
2 Correct 23 ms 13144 KB Output is correct
3 Correct 23 ms 14916 KB Output is correct
4 Correct 81 ms 24780 KB Output is correct
5 Correct 60 ms 24568 KB Output is correct
6 Correct 83 ms 25572 KB Output is correct
7 Correct 77 ms 25672 KB Output is correct
8 Correct 80 ms 24768 KB Output is correct
9 Correct 69 ms 25172 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 9816 KB Output is correct
2 Correct 12 ms 11352 KB Output is correct
3 Correct 56 ms 21396 KB Output is correct
4 Correct 89 ms 24020 KB Output is correct
5 Correct 93 ms 24092 KB Output is correct
6 Correct 81 ms 24172 KB Output is correct
7 Correct 89 ms 24248 KB Output is correct
8 Correct 85 ms 24060 KB Output is correct
9 Correct 85 ms 24192 KB Output is correct
10 Correct 94 ms 24032 KB Output is correct
11 Correct 102 ms 24404 KB Output is correct
12 Correct 112 ms 24352 KB Output is correct
13 Correct 93 ms 24548 KB Output is correct
14 Correct 90 ms 24404 KB Output is correct
15 Correct 92 ms 24252 KB Output is correct
16 Correct 71 ms 24176 KB Output is correct
17 Correct 100 ms 24556 KB Output is correct
18 Correct 88 ms 24548 KB Output is correct
19 Correct 80 ms 24212 KB Output is correct
20 Correct 79 ms 24540 KB Output is correct
21 Correct 73 ms 24656 KB Output is correct
22 Correct 80 ms 24656 KB Output is correct
23 Correct 76 ms 24532 KB Output is correct
24 Correct 101 ms 24544 KB Output is correct
25 Correct 90 ms 26336 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 11608 KB Output is correct
2 Correct 11 ms 11608 KB Output is correct
3 Correct 93 ms 25604 KB Output is correct
4 Correct 113 ms 26324 KB Output is correct
5 Correct 106 ms 28092 KB Output is correct
6 Correct 121 ms 28156 KB Output is correct
7 Correct 127 ms 28156 KB Output is correct
8 Correct 120 ms 28208 KB Output is correct
9 Correct 95 ms 21968 KB Output is correct
10 Correct 102 ms 22820 KB Output is correct
11 Correct 125 ms 24232 KB Output is correct
12 Correct 124 ms 26772 KB Output is correct
13 Correct 118 ms 27480 KB Output is correct
14 Correct 113 ms 28168 KB Output is correct
15 Correct 116 ms 28100 KB Output is correct
16 Correct 107 ms 24288 KB Output is correct
17 Correct 80 ms 24524 KB Output is correct
18 Correct 77 ms 24652 KB Output is correct
19 Correct 85 ms 24388 KB Output is correct
20 Correct 80 ms 24556 KB Output is correct
21 Correct 136 ms 27836 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 11592 KB Output is correct
2 Correct 12 ms 11660 KB Output is correct
3 Correct 95 ms 25160 KB Output is correct
4 Correct 100 ms 25852 KB Output is correct
5 Correct 112 ms 26416 KB Output is correct
6 Correct 109 ms 28048 KB Output is correct
7 Correct 95 ms 25168 KB Output is correct
8 Correct 109 ms 25868 KB Output is correct
9 Correct 97 ms 26352 KB Output is correct
10 Correct 121 ms 28160 KB Output is correct
11 Correct 129 ms 28144 KB Output is correct
12 Correct 124 ms 28152 KB Output is correct
13 Correct 105 ms 24484 KB Output is correct
14 Correct 110 ms 22672 KB Output is correct
15 Correct 93 ms 24240 KB Output is correct
16 Correct 104 ms 22828 KB Output is correct
17 Correct 101 ms 24416 KB Output is correct
18 Correct 101 ms 22692 KB Output is correct
19 Correct 131 ms 26896 KB Output is correct
20 Correct 115 ms 27516 KB Output is correct
21 Correct 118 ms 28072 KB Output is correct
22 Correct 125 ms 28176 KB Output is correct
23 Correct 120 ms 28164 KB Output is correct
24 Correct 115 ms 28104 KB Output is correct
25 Correct 142 ms 28316 KB Output is correct
26 Correct 129 ms 28348 KB Output is correct
27 Correct 84 ms 24448 KB Output is correct
28 Partially correct 82 ms 24248 KB Output is partially correct
29 Partially correct 88 ms 24880 KB Output is partially correct
30 Correct 86 ms 24612 KB Output is correct
31 Correct 89 ms 24360 KB Output is correct
32 Correct 86 ms 24272 KB Output is correct
33 Correct 89 ms 25040 KB Output is correct
34 Correct 92 ms 24752 KB Output is correct
35 Correct 86 ms 24648 KB Output is correct
36 Correct 81 ms 24220 KB Output is correct
37 Correct 81 ms 24788 KB Output is correct
38 Partially correct 93 ms 24636 KB Output is partially correct
39 Correct 113 ms 28076 KB Output is correct
40 Correct 113 ms 27800 KB Output is correct
41 Partially correct 124 ms 27916 KB Output is partially correct
42 Correct 121 ms 27900 KB Output is correct