Submission #227373

#TimeUsernameProblemLanguageResultExecution timeMemory
227373cgiosy조개 줍기 (KOI17_shell)C++17
46 / 100
2060 ms13944 KiB
#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;
		int r=l+1;
		if(t=='U') 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) {
			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';
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...