103322024-03-31 13:13:48111Hegyi levegőcpp17Accepted 100/1001.208s747020 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

int ans[500000],mn;

struct DSU{
	vector<int>v;
	vector<vector<tuple<int,int,int>>>q;
	
	DSU(int n):v(n,-1),q(n){
	}
	
	int find(int i){
		return v[i]<0?i:v[i]=find(v[i]);
	}
	
	void unite(int i,int j){
		int a=find(i),b=find(j);
		if(a==b){
			return;
		}
		if(q[a].size()<q[b].size()){
			swap(a,b);
		}
		for(auto[ii,jj,k]:q[b]){
			int aa=find(ii),bb=find(jj);
			if(aa==a&&bb==b||aa==b&&bb==a){
				ans[k]=mn;
			}
			else{
				q[a].emplace_back(ii,jj,k);
			}
		}
		v[a]+=v[b];
		v[b]=a;
	}
	
	void add(int i,int j,int k){
		q[find(i)].emplace_back(i,j,k);
		q[find(j)].emplace_back(i,j,k);
	}
};

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int N,M,Q;
	cin>>N>>M>>Q;
	int m[N][M];
	for(int i=0;i<N;i++){
		for(int j=0;j<M;j++){
			cin>>m[i][j];
		}
	}
	auto C=[&](int i,int j)->int{
		return i*M+j;
	};
	DSU dsu(N*M);
	for(int i=0;i<Q;i++){
		int a,b,c,d;
		cin>>a>>b>>c>>d;
		dsu.add(C(a-1,b-1),C(c-1,d-1),i);
	}
	vector<tuple<int,int,int>>e;
	for(int i=0;i<N;i++){
		for(int j=1;j<M;j++){
			e.emplace_back(max(m[i][j],m[i][j-1]),C(i,j),C(i,j-1));
		}
	}
	for(int i=1;i<N;i++){
		for(int j=0;j<M;j++){
			e.emplace_back(max(m[i][j],m[i-1][j]),C(i,j),C(i-1,j));
		}
	}
	sort(e.begin(),e.end());
	for(auto[x,i,j]:e){
		mn=x;
		dsu.unite(i,j);
	}
	for(int i=0;i<Q;i++){
		cout<<ans[i]<<'\n';
	}
	return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms1832 KiB
2Accepted3ms2200 KiB
subtask219/19
3Accepted4ms3380 KiB
4Accepted6ms3768 KiB
5Accepted6ms3804 KiB
6Accepted6ms4120 KiB
7Accepted6ms4384 KiB
8Accepted6ms4536 KiB
9Accepted6ms4820 KiB
10Accepted4ms4784 KiB
subtask320/20
11Accepted2ms3568 KiB
12Accepted4ms4288 KiB
13Accepted17ms12676 KiB
14Accepted189ms112764 KiB
15Accepted620ms271304 KiB
subtask420/20
16Accepted514ms184932 KiB
17Accepted517ms184904 KiB
18Accepted657ms232796 KiB
19Accepted628ms198804 KiB
20Accepted617ms190560 KiB
subtask531/31
21Accepted321ms204744 KiB
22Accepted303ms155944 KiB
23Accepted282ms124732 KiB
24Accepted284ms124684 KiB
25Accepted323ms205044 KiB
26Accepted314ms143636 KiB
27Accepted301ms274936 KiB
28Accepted324ms307640 KiB
29Accepted298ms286124 KiB
subtask610/10
30Accepted1.185s579632 KiB
31Accepted1.167s451472 KiB
32Accepted1.098s349320 KiB
33Accepted1.078s320480 KiB
34Accepted1.179s580668 KiB
35Accepted1.208s548676 KiB
36Accepted1.072s406516 KiB
37Accepted1.036s692832 KiB
38Accepted1.074s747020 KiB
39Accepted1.001s743276 KiB