What is wrong with my code?
I used RSQ(Range Sum Query) to solve this problem, but got Wrong Answer. Everything seems to be OK and I don't know where is a mistake. Here is my code:
 
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R+,S+,T-,V+,X+}
{$M 16384,0,655360}
Program Stars;
Var N:Integer;
    RSQ:Array[1..32000] Of Integer;
    Levels:Array[0..14999] Of Integer;
    I,J,K,X,Y:LongInt;
Begin
  ReadLn(N);
  For I:=1 To N Do Begin
    ReadLn(X,Y);
 
    J:=X;K:=0;
    While J>=1 Do Begin
      K:=K+RSQ[J];
      J:=J-(J And ((J-1) Xor J));
    End;
    Inc(Levels[K]);
 
    While X<=32000 Do Begin
      Inc(RSQ[X]);
      X:=X+(X And ((X-1) Xor X));
    End;
  End;
  For I:=0 To N-1 Do WriteLn(Levels[I]);
End.
I have made a little error...
If you put the line "Inc(X);" after "ReadLn(X,Y)" and change all 32000 on 32001 it will be AC. Complexity of my algorithm is N*Log(M) where N is number of stars and M is maximal possible value of axis of the star. It works only 0.031 sec!
 
Edited by author 13.03.2005 15:07