#include <iostream>
#include <stdio.h>
using namespace std;
long long int dp[1600][1600], seg[1600][6000], input[1600][1600],ans;
int n, si=1;
int query(int x, int y)
{
int ret=0;
y=y+si-1;
while(y){ret+=seg[x][y];y/=2;}
return ret;
}
void gang(int x, int v, int l, int r, int s, int e, int t)
{
if(l>r||e<l||r<s) return ;
if(s<=l&&r<=e) {seg[x][v]+=t;return ;}
gang(x,v*2,l,(l+r)/2,s,e,t);
gang(x,v*2+1,((l+r)/2)+1,r,s,e,t);
}
int main()
{
int i, j,k,inx,iny,s,e,d;
char ina;
cin>>n;
while(si<n) si*=2;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
scanf("%d", &input[i][j]);
dp[i][j]=max(dp[i-1][j],dp[i][j-1])+input[i][j];
ans=ans+dp[i][j];
}
}
printf("%lld\n", ans);
for(k=1;k<=n;k++)
{
scanf("\n%c %d %d",&ina,&inx,&iny);
if(ina=='U') d=1;
else d=-1;
s=iny;
for(i=iny+1;i<=n;i++)
{
if(max(dp[inx-1][i]+query(inx-1,i),dp[inx][i-1]+query(inx,i-1)+d)==dp[inx][i-1]+query(inx,i-1)+d) continue;
else break;
}
e=i-1;
gang(inx,1,1,si,s,e,d);
ans=ans+(e-s+1)*d;
for(i=inx+1;i<=n;i++)
{
while(max(dp[i-1][s]+query(i-1,s),dp[i][s-1]+query(i,s-1))==dp[i][s-1]+query(i,s-1)) s++;
if(s>e) break;
for(j=e+1;j<=n;j++)
{
if(max(dp[i-1][j]+query(i-1,j),dp[i][j-1]+query(i,j-1)+d)!=dp[i][j-1]+query(i,j-1)+d) break;
}
e=j-1;
if(s>e) break;
gang(i,1,1,si,s,e,d);
ans=ans+(e-s+1)*d;
}
printf("%lld\n", ans);
}
}
Compilation message
shell.cpp: In function 'int main()':
shell.cpp:30:37: warning: format '%d' expects argument of type 'int*', but argument 2 has type 'long long int*' [-Wformat=]
scanf("%d", &input[i][j]);
~~~~~~~~~~~~^
shell.cpp:30:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d", &input[i][j]);
~~~~~^~~~~~~~~~~~~~~~~~~~
shell.cpp:38:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("\n%c %d %d",&ina,&inx,&iny);
~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
1912 KB |
Output is correct |
2 |
Incorrect |
6 ms |
1912 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
273 ms |
42288 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
1912 KB |
Output is correct |
2 |
Incorrect |
6 ms |
1912 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |