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 |
WA了一下午了,实在是觉得不可能有问题了还是WA,哪位帮忙看看,谢谢了#include <set> #include <algorithm> #include <functional> using namespace std; const int MAXN = 30000; struct Person { int ID, salary, height; }; struct CompSalary : public binary_function<bool, const Person &, const Person &> { bool operator()(const Person & p1, const Person & p2) { return p1.salary < p2.salary; } }; struct CompID : public binary_function<bool, const Person &, const Person &> { bool operator()(const Person & p1, const Person & p2) { return p1.ID < p2.ID; } }; Person persons[MAXN]; Person personsT[MAXN]; int main(void) { int n, m, q, i, num, id; Person t, * p, * p1, * p2; scanf("%d", &n); while(n--) { scanf("%d%d", &m, &q); for(i = 0; i < m; ++i) { scanf("%d%d%d", &persons[i].ID, &persons[i].salary, &persons[i].height); personsT[i] = persons[i]; } sort(persons, persons+m, CompID()); sort(personsT, personsT+m, CompSalary()); while(q--) { scanf("%d", &t.ID); p = lower_bound(persons, persons+m, t, CompID()); t.salary = p->salary; p = lower_bound(personsT, personsT+m, t, CompSalary()); num = id = 0; for(p1 = personsT; p1 != p; ++p1) { if(p1->height <= p->height) ++num; } if(p != personsT + m - 1) { for(p1 = p + 1; true; ++p1) if(p1->height >= p->height) { id = p1->ID; break; } } printf("%d %d\n", id, num); } } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator