Cod sursa(job #726933)

Utilizator valentin.harsanValentin Harsan valentin.harsan Data 27 martie 2012 17:16:56
Problema Plantatie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#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;
}