#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
int n,m,k,x,y;
vector<int> mat;
unordered_map<int,bool> vis,este;
vector<vector<int>> graf;
vector<int> cate;
int ans=0,centre;
int di[]={1,0,-1,0};
int dj[]={0,1,0,-1};
bool inmat(int i,int j)
{
    return i>=0 && j>=0 && i<n && j<m;
}
void dfs(int cur)
{
    vis[cur]=1;
    if(!este[cur])
        cate.push_back(mat[cur]);
    else{
        centre++;
    }
    for(auto urm:graf[cur])
    {
        if(!vis[urm])
            dfs(urm);
    }
}
int main()
{
    cin>>n>>m;
    mat.resize(n*m+10);
    graf.resize(n*m+10);
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            int aux=i*m+j;
            cin>>mat[aux];
            este[aux]=0;
            vis[aux]=0;
        }
    }
    cin>>k;
    for(int i=1;i<=k;i++)
    {
        cin>>x>>y;
        int aux=x*m+y;
        este[aux]=true;
        ans+=mat[aux];
        for(int d=0;d<4;d++)
        {
            int urm1=x+di[d];
            int urm2=y+dj[d];
            if(inmat(urm1,urm2)){
               int auxx=urm1*m+urm2;
               graf[aux].push_back(auxx);
               graf[auxx].push_back(aux);
            }
        }
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            int aux=i*m+j;
            if(!vis[aux] && este[aux])
            {
                centre=0;
                cate.clear();
                dfs(aux);
                if(int(cate.size())<centre*3){
                    cout<<"No";
                    return 0;
                }
                sort(cate.begin() , cate.end());
                for(int care=1;care<=3*centre;care++){
                    ans+=cate[int(cate.size())-care];
                }
            }
        }
    }
    cout<<ans;
    return 0;
}
| # | 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... |