Submission #165163

#TimeUsernameProblemLanguageResultExecution timeMemory
165163Atill83Bob (COCI14_bob)C++14
120 / 120
179 ms25096 KiB
#include <bits/stdc++.h> #define ff first #define ss second #define endl '\n' using namespace std; const long long INF = (long long) 1e18; const int mod = (int) 1e9+7; const int MAXN = (int) 1e3+5; typedef long long ll; typedef unsigned long long ull; typedef pair<int,int> pii; typedef pair<ll,ll> pll; ll n; ll a[MAXN][MAXN]; ll sl[MAXN][MAXN]; ll us[MAXN][MAXN]; ll dig[MAXN][MAXN]; ll ans[MAXN][MAXN]; stack<int> s; int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr);cout.tie(nullptr); #ifdef Local freopen("../IO/int.txt","r",stdin); freopen("../IO/out.txt","w",stdout); #endif int m; cin>>n>>m; for(int i = 1; i <= n; i++){ for(int j = 1; j <= m; j++){ cin>>a[i][j]; } } ll an = 0; for(int i = 1; i <= n; i++){ for(int j = 1; j <= m; j++){ us[i][j] = 1; if(i != 0 && a[i - 1][j] == a[i][j]) us[i][j] += us[i - 1][j]; } } for(ll i = 1; i <= n; i++){ for(ll j = 1; j <= m; j++){ if(j == 0 || a[i][j] != a[i][j - 1]){ while(!s.empty()) s.pop(); s.push(j - 1); us[i][j - 1] = 0; ans[i][j - 1] = 0; s.push(j); ans[i][j] = us[i][j]; //cout<<"# "; }else{ while(us[i][s.top()] > us[i][j]){ s.pop(); } ll l = s.top(); //cout<<l<<" "; ans[i][j] += (s.empty() ? 0 : ans[i][s.top()]) + (j - l)*us[i][j]; s.push(j); } an += ans[i][j]; //cout<<ans[i][j]<<" "; }//cout<<endl; } cout<<an<<endl; #ifdef Local cout<<endl<<fixed<<setprecision(2)<<1000.0 * clock() / CLOCKS_PER_SEC<< " milliseconds "; #endif }
#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...