Submission

Status:
[-S][-S][-]

Score: 0

User: hmmm

Problemset: ล้อมรั้ว

Language: cpp

Time: 0.019 second

Submitted On: 2025-03-16 13:58:12

#include<bits/stdc++.h>
using namespace std;
using pii=array<int,4>;
const int N=355,M=2e5+5;
int a[N][N];
pii dp[M],qs[M];
bool chk[M];

int main(){
	ios::sync_with_stdio(0); cin.tie(0);
	int n,m,t;
  cin >> n >> m >> t;
  for(int i=1;i<N;i++){
    dp[i][0]=1e9;
    dp[i][1]=1e9;
  }
  int mx=0;
  for(int i=1;i<=n;i++){
    for(int j=1;j<=m;j++){
      cin >> a[i][j];
      mx=max(mx,a[i][j]);
      chk[a[i][j]]=true;
      // if(a[i][j]!=0){
      dp[a[i][j]][0]=min(dp[a[i][j]][0],i);
      dp[a[i][j]][1]=min(dp[a[i][j]][1],j);
      dp[a[i][j]][2]=max(dp[a[i][j]][2],i);
      dp[a[i][j]][3]=max(dp[a[i][j]][3],j);
      // }
    }
  }
  for(int i=0;i<4;i++){
    qs[mx][i]=dp[mx][i];
  }
  for(int i=mx-1;i>=0;i--){
    qs[i][0]=min(qs[i+1][0],dp[i][0]);
    qs[i][1]=min(qs[i+1][1],dp[i][1]);
    qs[i][2]=max(qs[i+1][2],dp[i][2]);
    qs[i][3]=max(qs[i+1][3],dp[i][3]);
  }
  while(t--){
    int x,y;
    cin >> x >> y;
    if(x==1){
      if(chk[y]==false) cout << "0\n";
      else cout << 2*(dp[y][3]-dp[y][1]+1)+2*(dp[y][2]-dp[y][0]+1) << "\n";
    //   cout << dp[y][0] << ' ' << dp[y][1] << ' ' << dp[y][2] << ' ' << dp[y][3] << ' ' << "--\n"; 
    }
    else {
        if(y>mx) cout << "0\n";
        else cout << 2*(qs[y][3]-qs[y][1]+1)+2*(qs[y][2]-qs[y][0]+1) << "\n";
        // cout << qs[y][0] << ' ' << qs[y][1] << ' ' << qs[y][2] << ' ' << qs[y][3] << ' ' << "\n"; 
    }
  }
}