# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
227358 | 2020-04-27T06:46:14 Z | cgiosy | None (KOI17_shell) | C++17 | 0 ms | 0 KB |
#include <bits/stdc++.h> using namespace std; alignas(64) int A[1520][1520]{}; int main() { ios::sync_with_stdio(0);cin.tie(0); int N; long long s=0; cin>>N; for(int i=1; i<=N; i++) for(int j=1; j<=N; j++) { cin>>A[i][j]; s+=A[i][j]+=max(A[i-1][j], A[i][j-1]); } cout<<s<<'\n'; for(int q=0; q<N; q++) { char t; int i, l; cin>>t>>i>>l; if(t=='U') { int r=l+1; while(l<r) { while(r<=N && A[i-1][r]<A[i][r-1]+1) r++; for(int j=l; j<r; j++) A[i][j]++; s+=r-l; if(++i>N) break; while(l<r && A[i-1][l]<=A[i][l-1]) l++; } } else { while(l<r) { int r=l+1; while(r<=N && A[i-1][r]<A[i][r-1]-1) r++; for(int j=l; j<r; j++) A[i][j]--; s-=r-l; if(++i>N) break; while(l<r && A[i-1][l]<=A[i][l-1]) l++; } } cout<<s<<'\n'; } }