下载了一个数据,自己测是对的,但提交上去全部WA
#include<bits/stdc++.h>
using namespace std;
const int N=4e3+5;
int n,m,k,t_,ii,dp[N],l[N],r[N],mm,ans,a[N][N],x,y,v;
struct QUEUE{
int s,i;
}q[N];
int main(){
cin>>n>>m>>k>>t_;
for(int i=1;i<=k;i++) scanf("%d%d%d",&x,&y,&v),a[x][y]=v;
for(int i=1;i<=n;i++){
for(int j=1,t=1,w=0;j<=m;j++){
q[++w]={dp[j],j};
while(t<w && q[w].s>=q[w-1].s) q[--w]=q[w+1];
while(t<w && j-q[t].i>t_) t++;
l[j]=q[t].s+a[i][j];
}
mm=ii+1;
for(int j=m,t=1,w=0;j;j--){
q[++w]={dp[j],j};
while(t<w && q[w].s>=q[w-1].s) q[--w]=q[w+1];
while(t<w && q[t].i-j>t_) t++;
r[j]=q[t].s+a[i][j];
}
for(int j=1;j<=m;j++) dp[j]=max(l[j],r[j]);
}
for(int i=1;i<=m;i++) ans=max(ans,dp[i]);
cout<<ans;
}