Submission #1171570

#TimeUsernameProblemLanguageResultExecution timeMemory
1171570javkhlantogsBob (COCI14_bob)C++20
120 / 120
239 ms16216 KiB
#include<bits/stdc++.h> #define ll long long using namespace std; int main(){ ll n,m,i,j,k,q,sum=0,cnt,ans=0; cin>>n>>m; vector<vector<ll>> a(n,vector<ll>(m)),b(n,vector<ll>(m)); for(i=0 ; i<n ; i++){ for(j=0 ; j<m ; j++){ cin>>a[i][j]; if(i>0 and a[i][j]==a[i-1][j]) b[i][j]=b[i-1][j]+1; else b[i][j]=1; } } for(i=0 ; i<n ; i++){ sum=0; stack<pair<ll,ll>> st; for(j=0 ; j<m ; j++){ if(j!=0 and a[i][j]!=a[i][j-1]){ while(st.size()>=1) st.pop(); sum=0; } if(st.size()==0){ st.push({b[i][j],1}); sum+=b[i][j]; } else{ cnt=1; while(st.size()>0 and st.top().first>=b[i][j]){ sum-=st.top().first*st.top().second; cnt+=st.top().second; st.pop(); } st.push({b[i][j],cnt}); sum+=b[i][j]*cnt; } ans+=sum; } } 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...
#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...