【PAT甲级 - 1028】List Sorting (25分)(模拟,排序)
題干:
Excel can sort records according to any column. Now you are supposed to imitate this function.
Input Specification:
Each input file contains one test case. For each case, the first line contains two integers?N?(≤10?5??) and?C, where?N?is the number of records and?C?is the column that you are supposed to sort the records with. Then?N?lines follow, each contains a record of a student. A student's record consists of his or her distinct ID (a 6-digit number), name (a string with no more than 8 characters without space), and grade (an integer between 0 and 100, inclusive).
Output Specification:
For each test case, output the sorting result in?N?lines. That is, if?C?= 1 then the records must be sorted in increasing order according to ID's; if?C?= 2 then the records must be sorted in non-decreasing order according to names; and if?C?= 3 then the records must be sorted in non-decreasing order according to grades. If there are several students who have the same name or grade, they must be sorted according to their ID's in increasing order.
Sample Input 1:
3 1 000007 James 85 000010 Amy 90 000001 Zoe 60Sample Output 1:
000001 Zoe 60 000007 James 85 000010 Amy 90Sample Input 2:
4 2 000007 James 85 000010 Amy 90 000001 Zoe 60 000002 James 98Sample Output 2:
000010 Amy 90 000002 James 98 000007 James 85 000001 Zoe 60Sample Input 3:
4 3 000007 James 85 000010 Amy 90 000001 Zoe 60 000002 James 90Sample Output 3:
000001 Zoe 60 000007 James 85 000002 James 90 000010 Amy 90?題目大意:
給定n個學生的學號,姓名,分數。讓你按照一定的要求排序
解題報告:
按照題意模擬。注意sort中這種ifelse的,第二個別忘寫return啊。。不然肯定就錯了。然后,用cin會T。
AC代碼:
#include<cstdio> #include<iostream> #include<algorithm> #include<queue> #include<stack> #include<map> #include<vector> #include<set> #include<string> #include<cmath> #include<cstring> #define FF first #define SS second #define ll long long #define pb push_back #define pm make_pair using namespace std; typedef pair<int,int> PII; const int MAX = 2e5 + 5; struct Node {int id;string name;int grd; } R[MAX]; int n,op; bool cmp1(Node a,Node b) {return a.id < b.id; } bool cmp2(Node a,Node b) {if(a.name != b.name) return a.name < b.name;else return a.id < b.id; } bool cmp3(Node a,Node b) {if(a.grd != b.grd) return a.grd < b.grd;else return a.id < b.id; } char s[MAX]; int main() {cin>>n>>op;for(int i = 1; i<=n; i++) {scanf("%d%s%d",&R[i].id,s,&R[i].grd);R[i].name = s;}if(op == 1) sort(R+1,R+n+1,cmp1);if(op == 2) sort(R+1,R+n+1,cmp2);if(op == 3) sort(R+1,R+n+1,cmp3);for(int i = 1; i<=n; i++) {printf("%.6d %s %d\n",R[i].id,R[i].name.c_str(),R[i].grd);}return 0 ; }?
總結
以上是生活随笔為你收集整理的【PAT甲级 - 1028】List Sorting (25分)(模拟,排序)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今年油价大跌,我国从中受益多少?仅原油进
- 下一篇: 2017年6月浦发信用卡新户首刷礼:任意