只有20分。
我用前缀和做的,求正解。
#include<bits/stdc++.h>
using namespace std;
long long a[2900][5000]={0},v[2900][5000]={0},l,r,n,k,m,maxx=-1;
inline long long read()
{
long long x=0,y=1;char c=getchar();
while(c<'0'||c>'9') {if(c=='-') y=-1;c=getchar();}
while(c>='0'&&c<='9') x=x*10+(c-'0'),c=getchar();
return x*y;
}
int main()
{
n=read(),k=read(),m=read();
for(register long long i=1;i<=k;i++) for(register long long j=1;j<=n;j++) a[i][j]=read(),v[i][j]=v[i][j-1]+a[i][j];
for(register long long i=1;i<=m;i++)
{
l=read(),r=read();
for(register long long j=1;j<=k;j++) maxx=max(maxx,v[j][r]-v[j][l-1]);
printf("%lld\n",maxx);maxx=-1;
}
return 0;
}
```cpp