Cod sursa(job #726933)
#include<iostream>
#include<fstream>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
const int N = 502;
int n,m,x[N][N],aib[N][N];
inline void update(int I, int J, int val) {
for(int i = I;i<=n;i+=i&(-i))
for(int j = J;j<=n;j+=j&(-j))
aib[i][j] += val;
}
inline int sum(int I, int J) {
int rez = 0;
for(int i = I;i!=0;i-=i&(-i))
for(int j = J;j!=0;j-=j&(-j))
rez += aib[i][j];
return rez;
}
inline int q(int i, int j, int l) {
return sum(i+l-1, j+l-1) - sum(i+l-1, j-1)
- sum(i-1, j+l-1) + sum(i-1,j-1);
}
int main() {
int i,j,l,el1;
in >> n >> m;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j) {
in >> x[i][j];
update(i,j,x[i][j]);
}
for(i=1;i<=m;++i) {
in >> el1 >> j >> l;
out << q(el1,j,l) << "\n";
}
return 0;
}