제출 #1215976

#제출 시각아이디문제언어결과실행 시간메모리
1215976Robert_juniorBob (COCI14_bob)C++20
72 / 120
193 ms68948 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define all(x) x.begin(), x.end()
#define ins insert
#define pb push_back
#define F first
#define S second
const int N = 1e6 + 7, M = 5e5 + 7;
const int mod = 1e9 + 7;
int h[1010][1010], a[1010][1010];
vector<pair<int, int>>pos[N];
void solve(){
    int n, m;
    cin>>n>>m;
    vector<int>v;
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            cin>>a[i][j];
            v.pb(a[i][j]);
        }
    }
    sort(all(v));
    v.erase(unique(all(v)), v.end());
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            a[i][j] = upper_bound(all(v), a[i][j]) - v.begin();
            pos[a[i][j]].pb({i, j});
        }
    }
    int ans = 0;
    for(int i = n; i >= 1; i--){
        for(int j = m; j >= 1; j--){
            if(a[i + 1][j] == a[i][j]){
                h[i][j] = (h[i + 1][j] + 1);
            }
            else{
                h[i][j] = 1;
            }
        }
    }
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            int mn = h[i][j];
            for(int k = j; k <= m && a[i][j] == a[i][k]; k++){
                mn = min(mn, h[i][k]);
                ans += mn;
            }
        }
    }
    cout<<ans<<'\n';
}
signed main(){
    ios_base :: sync_with_stdio(false);
    cin.tie(nullptr);
    int t = 1;
    //cin>>t; 
    for(int i = 1; i <= t; i++){
        //cout<<"Case "<<i<<": ";
        solve();
    }
}
#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...