Submission #672230

# Submission time Handle Problem Language Result Execution time Memory
672230 2022-12-15T06:34:44 Z Baytoro Birthday gift (IZhO18_treearray) C++17
0 / 100
8 ms 14424 KB
#include <bits/stdc++.h>
using namespace std;
#define ios ios::sync_with_stdio(false); cin.tie(NULL);
#define pb push_back
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define fr first
#define sc second
#define int long long
#define endl '\n'
void fopn(string name){
	freopen((name+".in").c_str(),"r",stdin);
	freopen((name+".out").c_str(),"w",stdout);
}
const int INF=1e18,mod=1e9+7;
int n,m,q;
int p[200005][21],depth[200005];
vector<int> g[200005];
void dfs(int x, int par){
	p[x][0]=par;
	depth[x]=depth[par]+1;
	for(auto it: g[x]){
		if(it==par) continue;
		dfs(it,x);
	}
}
int lca(int a, int b){
	if(depth[a]<depth[b]) swap(a,b);
	int k=depth[a]-depth[b];
	for(int i=0;i<21;i++){
		if(k&(1<<i))
			a=p[a][i];
	}
	if(a==b) return a;
	for(int i=20;i>=0;i--){
		if(p[a][i]!=p[b][i]){
			a=p[a][i];
			b=p[b][i];
		}
	}
	return p[a][0];
}
int ar[100005];
set<int> a[100005],b[100005];
void solve(){
	cin>>n>>m>>q;
	for(int i=1;i<n;i++){
		int a,b;
		cin>>a>>b;
		g[a].pb(b);
		g[b].pb(a);
	}
	dfs(1,1);
	for(int l=1;l<21;l++){
		for(int i=1;i<=n;i++){
			p[i][l]=p[p[i][l-1]][l-1];
		}
	}
	for(int i=1;i<=m;i++){
		cin>>ar[i];
		a[ar[i]].insert(i);
		if(i>1)
			b[lca(ar[i],ar[i-1])].insert(i-1);
	}
	while(q--){
		int t;
		cin>>t;
		if(t==1){
			int p,v;cin>>p>>v;
			a[ar[p]].erase(p);
			a[v].insert(p);
			if(p>1){
				b[lca(ar[p],ar[p-1])].erase(p-1);
				b[lca(v,ar[p-1])].insert(p-1);
			}
			if(p<m){
				b[lca(ar[p],ar[p+1])].erase(p);
				b[lca(v,ar[p+1])].insert(p);
			}
			ar[p]=v;
		}
		else{
			int l,r,v;
			cin>>l>>r>>v;
			auto it = a[v].lower_bound(l);
			if(it!=a[v].end() && *it<=r){
				cout<<*it<<' '<<*it<<endl;
			}
			else{
				it=b[v].lower_bound(l);
				if(it!=b[v].end() && *it<=r){
					cout<<*it<<' '<<*it+1<<endl;
				}
				else{
					cout<<"-1 -1\n";
				}
			}
		}
	}
}
main(){
	ios;
	int T=1;
	//cin>>T;
	while(T--){
		solve();
	}
}

Compilation message

treearray.cpp:101:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
  101 | main(){
      | ^~~~
treearray.cpp: In function 'void fopn(std::string)':
treearray.cpp:12:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |  freopen((name+".in").c_str(),"r",stdin);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
treearray.cpp:13:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   13 |  freopen((name+".out").c_str(),"w",stdout);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 8 ms 14420 KB n=5
2 Correct 8 ms 14424 KB n=100
3 Correct 8 ms 14420 KB n=100
4 Correct 8 ms 14420 KB n=100
5 Correct 8 ms 14420 KB n=100
6 Correct 8 ms 14420 KB n=100
7 Correct 8 ms 14420 KB n=100
8 Correct 8 ms 14380 KB n=100
9 Correct 8 ms 14420 KB n=100
10 Correct 7 ms 14420 KB n=100
11 Correct 8 ms 14420 KB n=100
12 Incorrect 8 ms 14360 KB Wrong output format.
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 8 ms 14420 KB n=5
2 Correct 8 ms 14424 KB n=100
3 Correct 8 ms 14420 KB n=100
4 Correct 8 ms 14420 KB n=100
5 Correct 8 ms 14420 KB n=100
6 Correct 8 ms 14420 KB n=100
7 Correct 8 ms 14420 KB n=100
8 Correct 8 ms 14380 KB n=100
9 Correct 8 ms 14420 KB n=100
10 Correct 7 ms 14420 KB n=100
11 Correct 8 ms 14420 KB n=100
12 Incorrect 8 ms 14360 KB Wrong output format.
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 8 ms 14420 KB n=5
2 Correct 8 ms 14424 KB n=100
3 Correct 8 ms 14420 KB n=100
4 Correct 8 ms 14420 KB n=100
5 Correct 8 ms 14420 KB n=100
6 Correct 8 ms 14420 KB n=100
7 Correct 8 ms 14420 KB n=100
8 Correct 8 ms 14380 KB n=100
9 Correct 8 ms 14420 KB n=100
10 Correct 7 ms 14420 KB n=100
11 Correct 8 ms 14420 KB n=100
12 Incorrect 8 ms 14360 KB Wrong output format.
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 8 ms 14420 KB n=5
2 Correct 8 ms 14424 KB n=100
3 Correct 8 ms 14420 KB n=100
4 Correct 8 ms 14420 KB n=100
5 Correct 8 ms 14420 KB n=100
6 Correct 8 ms 14420 KB n=100
7 Correct 8 ms 14420 KB n=100
8 Correct 8 ms 14380 KB n=100
9 Correct 8 ms 14420 KB n=100
10 Correct 7 ms 14420 KB n=100
11 Correct 8 ms 14420 KB n=100
12 Incorrect 8 ms 14360 KB Wrong output format.
13 Halted 0 ms 0 KB -