Спасибо сдал, еще одной моей проблемой кажется самой большой было то, что я использую 5 вызовов split и merge вместо 3, для того, чтобы поставить следующее число на свое место. Т.е. получается что 5 * n * logn TLE, а 3 * n * logn АС, грубо говоря.
до
inline void swapper(int l, int r)
{
pnode L,MID,R;
split(T,L,R,l);
split(R,MID,R,r - l + 1);
if (MID) MID -> rev ^= true;
merge(T,L,MID);
merge(T,T,R);
split(T,L,T,1);
}
после
inline void swapper(int l, int r)
{
pnode L,MID,R;
split(T,L,R,r);
split(R,MID,R,1);
if (L) L -> rev ^= true;
merge(T,L,R);
}