int A[100000], B[100000], X[100000]; { int i, k; ll N, W, H; segtree t; pair mn; ll res[2] = {0LL, 0LL}; rd(N,W,H,(A,B,X)(N)); X[0..N-1]--; t.malloc(W, 1); rep(i,N){ t.add(X[i], X[i]+A[i], -B[i]); for(;;){ mn = t.getMin(X[i], X[i]+A[i]); if(mn.first > -H) break; k = mn.second; res[i%2]++; t.add(k,k+1,1d18); } } if(res[0] > res[1]) wt("A"); if(res[0] < res[1]) wt("B"); if(res[0]==res[1]) wt("DRAW"); }