제출 #868820

#제출 시각아이디문제언어결과실행 시간메모리
868820Darren0724Sandcastle 2 (JOI22_ho_t5)C++17
15 / 100
5034 ms3024 KiB
#include<bits/stdc++.h>
using namespace std;
#define LCBorz ios_base::sync_with_stdio(false);cin.tie(0);
#define int long long
#define all(x) x.begin(),x.end()
const int INF=1e18;
const int mod=998244353;
int N;
vector<vector<int>> v;
vector<int> x,y;
int solve(int x1,int y1,int x2,int y2){
    int flag=0;
    int a,b;
    for(int i=1;i<=N;i++){
        if(!(x[i]>=x1&&x[i]<=x2&&y[i]>=y1&&y[i]<=y2)){
            continue;
        }
        if(flag&&abs(a-x[i])+abs(b-y[i])!=1){
            return 0;
        }
        flag=1;
        a=x[i],b=y[i];
    }
    return 1;
}
int32_t main(){
    LCBorz;
    int n,m;cin>>n>>m;
    v.resize(n+2,vector<int>(m+2));
    vector<int> a;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>v[i][j];
            a.push_back(v[i][j]);
        }
    }
    sort(all(a));
    N=n*m;
    x.resize(N+1);
    y.resize(N+1);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            v[i][j]=lower_bound(all(a),v[i][j])-a.begin()+1;
            x[v[i][j]]=i;
            y[v[i][j]]=j;
        }
    }
    int ans=0;
    for(int i1=1;i1<=n;i1++){
        for(int j1=1;j1<=m;j1++){
            for(int i2=i1;i2<=n;i2++){
                for(int j2=j1;j2<=m;j2++){
                    ans+=solve(i1,j1,i2,j2);
                }
            }
        }
    }
    cout<<ans<<endl;
    
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...