1056. Mice and Rice (25)解题报告
2016-10-30 11:11
330 查看
#define _CRT_SECURE_NO_WARNINGS #include <cstdio> #include <cstdlib> #include <algorithm> #include <vector> using namespace std; struct player { int index, w, rank; }; bool comp1(player p1, player p2); bool comp2(player p1, player p3); int main(void) { int np, ng, i, j; player *arr; scanf("%d %d", &np, &ng); arr = new player[np]; for (i = 0; i < np; i++) { arr[i].index = i; scanf("%d", &arr[i].w); } vector<int> p, winner; for (i = 0; i < np; i++) { scanf("%d", &j); p.push_back(j); } int rank = 1, max, index; while (p.size() != 1) { for (i = 0; i < p.size(); i++) { arr[p[i]].rank = rank; } for (i = 0; i < p.size(); i += ng) { max = -1; for (j = i; j < i + ng && j < p.size(); j++) { if (arr[p[j]].w > max) { max = arr[p[j]].w; index = p[j]; } } winner.push_back(index); } rank++; p = winner; winner.clear(); } arr[p[0]].rank = rank; rank++; int cnt = 1, newrank = 0; sort(arr, arr + np, comp1); for (i = 0; i < np; i++) { if (rank != arr[i].rank) { rank = arr[i].rank; newrank += cnt; arr[i].rank = newrank; cnt = 1; } else { arr[i].rank = newrank; cnt++; } } sort(arr, arr + np, comp2); printf("%d", arr[0].rank); for (i = 1; i < np; i++) { printf(" %d", arr[i].rank); } putchar('\n'); return 0; } bool comp2(player p1, player p2) { return p1.index < p2.index; } bool comp1(player p1, player p2) { return p1.rank > p2.rank; }
相关文章推荐
- 1056. Mice and Rice (25)
- 1056.Mice and Rice (25)...to be continued...
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- PAT (Advanced) 1056. Mice and Rice (25)
- pat 甲级 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- PAT 1056. Mice and Rice (25)
- PAT-A-1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- PAT 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- 【C++】PAT(advanced level)1056. Mice and Rice (25)
- PAT甲题题解-1056. Mice and Rice (25)-模拟题
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)PAT甲级
- PAT1056 Mice and Rice (25)