Submission #1173226

#TimeUsernameProblemLanguageResultExecution timeMemory
1173226ezzzayBob (COCI14_bob)C++20
24 / 120
1096 ms6276 KiB
#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
const int N=1500;
int a[N][N];
int ps[N][N];
bool check(int x, int y, int l, int r){
    set<int>st;
    for(int i=x;i<=y;i++){
        for(int j=l;j<=r;j++){
            st.insert(a[i][j]);
            if(st.size()>1)return 0;
        }
    }
    return 1;
}
signed main(){
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
        }
    }
    int ans=0;
    for(int y1=1;y1<=n;y1++){
        for(int y2=y1;y2<=n;y2++){
            for(int x1=1;x1<=m;x1++){
                int lo=x1,hi=m;
                while(hi>=lo){
                    int mid= (hi+lo)/2;
                    if(check(y1,y2,x1,mid)){
                        lo=mid+1;
                    }
                    else{
                        hi=mid-1;
                    }
                }
                //cout<<y1<<" "<<y2<<" "<<x1<<" "<<hi<<endl;
                ans+= hi-x1+1;
            }
        }
    }
    cout<<ans;
}
#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...
#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...