103322024-03-31 13:13:48111Hegyi levegőcpp17Elfogadva 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1832 KiB
2Elfogadva3ms2200 KiB
subtask219/19
3Elfogadva4ms3380 KiB
4Elfogadva6ms3768 KiB
5Elfogadva6ms3804 KiB
6Elfogadva6ms4120 KiB
7Elfogadva6ms4384 KiB
8Elfogadva6ms4536 KiB
9Elfogadva6ms4820 KiB
10Elfogadva4ms4784 KiB
subtask320/20
11Elfogadva2ms3568 KiB
12Elfogadva4ms4288 KiB
13Elfogadva17ms12676 KiB
14Elfogadva189ms112764 KiB
15Elfogadva620ms271304 KiB
subtask420/20
16Elfogadva514ms184932 KiB
17Elfogadva517ms184904 KiB
18Elfogadva657ms232796 KiB
19Elfogadva628ms198804 KiB
20Elfogadva617ms190560 KiB
subtask531/31
21Elfogadva321ms204744 KiB
22Elfogadva303ms155944 KiB
23Elfogadva282ms124732 KiB
24Elfogadva284ms124684 KiB
25Elfogadva323ms205044 KiB
26Elfogadva314ms143636 KiB
27Elfogadva301ms274936 KiB
28Elfogadva324ms307640 KiB
29Elfogadva298ms286124 KiB
subtask610/10
30Elfogadva1.185s579632 KiB
31Elfogadva1.167s451472 KiB
32Elfogadva1.098s349320 KiB
33Elfogadva1.078s320480 KiB
34Elfogadva1.179s580668 KiB
35Elfogadva1.208s548676 KiB
36Elfogadva1.072s406516 KiB
37Elfogadva1.036s692832 KiB
38Elfogadva1.074s747020 KiB
39Elfogadva1.001s743276 KiB