Submission
Status:
[PP][PP][P]
Score: 100
User: ftm
Problemset: ล้อมรั้ว
Language: cpp
Time: 0.019 second
Submitted On: 2025-03-15 23:21:26
#include<bits/stdc++.h>
using namespace std;
#define f(i,a,b,c) for(int i=a;i<=b;i+=c)
#define r(i,a,b,c) for(int i=a;i>=b;i-=c)
#define fi first
#define se second
#define pb push_back
using ll=long long int;
using pii=pair<int,int>;
const int N=1e6;
const int M=1e9+7;
array<int,4> mp[200001];
int a[355][355];
array<int,4> b;
int ans[200001];
int dp[200005];
int main(){
ios::sync_with_stdio(0); cin.tie(0);
int h,w,q;cin>>h>>w>>q;
f(i,1,200000,1){
mp[i][0]=500;
mp[i][1]=500;
b[0]=500;
b[1]=500;
}
f(i,1,h,1){
f(j,1,w,1){
cin>>a[i][j];
mp[a[i][j]][0]=min(mp[a[i][j]][0],i);
mp[a[i][j]][1]=min(mp[a[i][j]][1],j);
mp[a[i][j]][2]=max(mp[a[i][j]][2],i);
mp[a[i][j]][3]=max(mp[a[i][j]][3],j);
}
}
r(i,200000,0,1){
ans[i]=2*(mp[i][2]+mp[i][3]-mp[i][0]-mp[i][1]+2);
b[0]=min(b[0],mp[i][0]);
b[1]=min(b[1],mp[i][1]);
b[2]=max(b[2],mp[i][2]);
b[3]=max(b[3],mp[i][3]);
if(ans[i]<0) ans[i]=0;
dp[i]=2*(b[2]+b[3]-b[0]-b[1]+2);
if(dp[i]<0) dp[i]=0;
}
while(q--){
int x,v;cin>>x>>v;
if(x==1) cout<<ans[v]<<"\n";
else cout<<dp[v]<<"\n";
}
}
/*
1 10 4
0 1 0 2 1 0 3 0 2 4
1 1
1 2
2 2
2 3
///////////////
5 6 6
0 0 0 2 0 1
0 5 0 0 1 1
0 0 7 5 2 0
0 5 0 0 0 0
0 0 3 0 6 0
1 5
2 2
2 7
1 1
1 4
2 10
*/