网络公司网站做的不错的,怎么做义工网站,浙江网站建设推广公司十大排行,中国工程监理人才网年底#xff0c;报销都挤在一堆#xff0c;财务忙得不可开交。每个报销表包括姓名#xff0c;各项费用的金额。对于每个报销单#xff0c;这里规定按如下要求处理#xff1a;
金额高的优先处理#xff1b;若金额相等时#xff0c;则姓名字典序小的优先处理#xff1b;…年底报销都挤在一堆财务忙得不可开交。每个报销表包括姓名各项费用的金额。对于每个报销单这里规定按如下要求处理
金额高的优先处理若金额相等时则姓名字典序小的优先处理若金额和姓名都相等则按报销单来得早的优先处理。
请帮财务排好报销单的处理顺序。
输入格式:
首先输入一个整数T表示测试数据的组数然后是T组测试数据。对于每组测试数据先输入2个正整数n、m1≤n≤201≤m≤10然后是n行输入第i行先输入第i个报销单上的姓名长度不超过10个字符且只包含大小写英文字母然后再输入m个整数表示第i个报销单上的各项费用数据之间都以一个空格分隔第i行输入的编号为i编号越小表示来得越早。
输出格式:
对于每组测试输出n1行第一行是“Case k:”其中k表示是第k组测试对于后面的n行每行包含一个按规定要求排好序之后的报销单信息包括费用排名从1开始若费用相同则排名也相同否则排名为排序后的序号、原编号、姓名、总费用每两个数据之间留一个空格。每两组测试数据之间留一个空行。
输入样例:
2
4 5
Tom 100 900 200 100 700
Jack 1000 400 500 50 50
Sara 700 100 200 1000 300
Iris 100 900 200 100 600
3 2
Tom 2600 400
Jack 3800 800
Mary 3100 100输出样例:
Case 1:
1 3 Sara 2300
2 2 Jack 2000
2 1 Tom 2000
4 4 Iris 1900Case 2:
1 2 Jack 4600
2 3 Mary 3200
3 1 Tom 3000
个人思路 #define _CRT_SECURE_NO_WARNINGS 1
#includestdio.h
#includestring.h
struct MyStruct
{int no;char name[100];int sum;
};
int cmp(const void* p1, const void* p2)
{if (((struct MyStruct*)p1)-sum ! ((struct MyStruct*)p2)-sum){return ((struct MyStruct*)p2)-sum - ((struct MyStruct*)p1)-sum;}else{return strcmp(((struct MyStruct*)p1)-name, ((struct MyStruct*)p2)-name);}}
int main()
{int n;scanf(%d, n);int No0;while (n--){int count1;int x, y;int sum 0;scanf(%d %d, x, y);int t x;struct MyStruct arr[t];for (int i 0; i x; i){sum 0;arr[i].noi1;scanf(%s, arr[i].name);int a;for (int j 0; j y; j){scanf(%d, a);sum sum a;}arr[i].sum sum;}qsort(arr, t, sizeof(arr[0]), cmp);No;printf(Case %d:\n,No);for (int k 0; k t; k){if(arr[k].sum!arr[k-1].sum){countk1;}printf(%d %d %s %d\n,count, arr[k].no,arr[k].name, arr[k].sum);}if(n!0){printf(\n);}}return 0;
}