言語仕様知らんので間違いかもしれんが
if(!P[i])P[i]=R; → P[i]||(P[i]=R);
if(N<3)Q++; → Q+=N<3;
if(N<3)Q--; → Q-=N<3;