Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Did you initialize array answer[...]?In Reply To:Plz help me WA :( Posted by:insany at 2006-03-14 19:48:05 Sorry if this is not the reason. And you didn't show the code of RBTree, so I have no idea in that way. :) > > I used my RedBlack tree to solve it, > but WA T.T > > There is any critical input data for my source? > (assume my RBTree class is right.. I tested it several times...) > > > > int n, m; > int a[100000]; > struct query { > int num; > int l, r, rank; > }; > bool operator < (const query& a, const query& b) > { > if (a.l == b.l) { > return (a.r < b.r); > } > return (a.l < b.l); > } > query q[50000]; > int answer[50000]; > > int main() > { > scanf("%d%d", &n, &m); > for (int i = 0; i < n; i++) { > scanf("%d", &a[i]); > } > > for (int i = 0; i < m; i++) { > scanf("%d%d%d", &q[i].l, &q[i].r, &q[i].rank); > if (q[i].l > q[i].r) { > int temp = q[i].l; q[i].l = q[i].r; q[i].r = temp; > } > q[i].l--, q[i].r--; > q[i].num = i; > //printf("%d %d %d\n", q[i].l, q[i].r, q[i].rank); > } > sort(q, q + m); > > RedBlack rb; > > for (int i = q[0].l; i <= q[0].r; i++) { > rb.insert(a[i]); > } > answer[q[0].num] = rb.rank(q[0].rank); > > for (int i = 1; i < m; i++) { > if (q[i - 1].r >= q[i].r) { > (* (int *)0) = 0; > } > if (q[i - 1].r < q[i].l) { > for (int j = q[i - 1].l; j <= q[i - 1].r; j++) rb.erase(a[j]); > for (int j = q[i].l; j <= q[i].r; j++) rb.insert(a[j]); > } > else { > for (int j = q[i - 1].l; j < q[i].l; j++) rb.erase(a[j]); > for (int j = q[i - 1].r + 1; j <= q[i].r; j++) rb.insert(a[j]); > } > answer[q[i].num] = rb.rank(q[i].rank); > } > > for (int i = 0; i < m; i++) { > printf("%d\n", answer[i]); > } > > return 0; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator