hehe .. nadam se da pricas o kumulativnim u 2d ( binary indexed trees ), ako ne reci pa cu izbrisati ovo :)
int read( int x, int y, int x2, int y2 )
{
x--;
y--;
return get( x, y ) - get( x, y2 ) - get( x2, y ) + get( x2, y2 );
}
int get( int x, int y )
{
int ret = 0;
for ( int i = x; i > 0; i -= ( i & -i ) )
for ( int j = y; j > 0; j -= ( j & -j ) )
ret += S[ i ][ j ];
return ret;
}
dakle da bi ucitao readsingle( x, y ), trebas da pozoves
read( x, y, x, y );
Upravo sam primetio da radis u pascalu, nadam se da mozes da citas c/c++, ako ne mozes reci, pa cu napisati ovo u pascalu
ovo read(), radis po principu ukljucenja iskljucenja, npr. za 3d
int read( int x, int y, int z, int x2, int y2, int z2 )
{
x--; y--; z--;
return get( x, y, z ) - get( x, y, z2 ) - get( x, y2, z ) - get( x2, y, z ) + get( x, y2, z2 ) + get( x2, y2, z ) + get( x2, y, z2 ) - get( x2, y2, z2 ).
}
int get( int x, int y, int z )
{
int res = 0;
for ( int i = x; i > 0; i -= ( i & -i ) )
for ( int j = y; j > 0; j -= ( j & -j ) )
for ( int k = z; k > 0; k -= ( k & -k ) )
res += S[ i ][ j ][ k ];
return res;
}
ako gresim, molim vas ispravite me. :)