AC主函数
```cpp
signed main()
{
n=read(),m=read(),k=read(),t=read();
re int x,y,pre;
while(k--) x=read(),y=read(),f[x][y]=read();
// sort(ve.begin(),ve.end());
// ve.erase(unique(ve.begin(),ve.end()),ve.end());
// pre=ve[0];
dfor(i,2,n)
{
deque<int > q;
re int pos=0;
dfor(j,1,m)
{
while(!q.empty()&&j-t>q.front()) q.pop_front();
while(pos+1<=m&&pos+1<=j+t)
{
++pos;
if(!f[i-1][pos]) continue;
while(!q.empty()&&f[i-1][q.back()]<=f[i-1][pos]) q.pop_back();
q.push_back(pos);
}
if(!q.empty()) ans=max(ans,f[i][j]+=f[i-1][q.front()]);
}
}
write(ans);
return 0;
}
```
by Zipao @ 2023-09-21 16:07:45