#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
using ll=long long;
const int inf=-(1e9);
int main(){
    int n,m,ans=0,k,a,b,cur;
    cin>>n>>m;
    vector<vector<int>> v(n,vector<int>(m,-1));
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>v[i][j];
        }
    }
    cin>>k;
    bool flag=1,tmp;
    vector<int> p(k+1);
    p[0]=-10;
    for(int i=0;i<k;i++){
        cin>>a>>b;
        p[i+1]=b;
    }
    vector<int> dp(k+1,0),dp2(k+1,0);
    sort(p.begin(),p.end());
    if(n<2)flag=0;
    else{
    if(a==0){
        for(int i=0;i<k;i++){
            if(i>0&&p[i]-p[i-1]<3)flag=0;
            else{
                b=p[i];
                ans+=v[a][b]+v[a+1][b]+v[a][b-1]+v[a][b+1];
            }
        }
    }
    else if(a==n-1){
        for(int i=0;i<k;i++){
            if(i>0&&p[i]-p[i-1]<3)flag=0;
            else{
                b=p[i];
                ans+=v[a][b]+v[a-1][b]+v[a][b-1]+v[a][b+1];
            }
        }
    }else{
        
        for(int i=1;i<=k;i++){
            dp2[i]=v[a][b]+v[a+1][b]+v[a-1][b]+v[a][b+1]+dp2[i-1];
            if(p[i]-p[i-1]==0){
                flag=0;
            }
            else if(p[i]-p[i-1]==1){
                dp[i]=inf;
                b=p[i];
            }
            else if(p[i]-p[i-1]==2){
                dp2[i]=max(dp2[i],v[a][b]+v[a+1][b]+v[a-1][b]+v[a][b-1]+dp2[i-1]);
                dp[i]=max(dp[i],v[a][b]+v[a+1][b]+v[a][b+1]+v[a][b-1]+dp2[i-1]);
                dp[i]=max(dp[i],v[a][b]+v[a-1][b]+v[a][b+1]+v[a][b-1]+dp2[i-1]);
            }
            if(p[i]-p[i-1]>=3){
                dp2[i]=max(dp2[i],v[a][b]+v[a+1][b]+v[a-1][b]+v[a][b-1]+dp[i-1]);
                dp[i]=max(dp[i],v[a][b]+v[a+1][b]+v[a][b+1]+v[a][b-1]+dp[i-1]);
                dp[i]=max(dp[i],v[a][b]+v[a-1][b]+v[a][b+1]+v[a][b-1]+dp[i-1]);
            }
            dp[i]=max(dp[i],dp2[i]);
        }
    }
    }
    if(flag)cout<<dp[k]<<"\n";
    else cout<<"No\n";
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |