1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| package Diff
func rangeAddQueries(n int, queries [][]int) [][]int { diff:=make([][]int,n+1) for i:=0;i<=n;i++{ diff[i]=make([]int, n+1) }
for _,q:=range queries{ r1,c1,r2,c2,x:=q[0],q[1],q[2],q[3],1 r2++ c2++ diff[r1][c1]+=x diff[r2][c1]-=x diff[r1][c2]-=x diff[r2][c2]+=x }
ans:=make([][]int,n+1) for i:=0;i<=n;i++{ ans[i]=make([]int, n+1) } for i:=0;i<n;i++{ for j:=0;j<n;j++{ ans[i+1][j+1]=ans[i+1][j]+ans[i][j+1]-ans[i][j]+diff[i][j] } } ans=ans[1:] for k,_ :=range ans{ ans[k]=ans[k][1:] } return ans }
|