【九度】题目1346:会员积分排序
来源:互联网 发布:湖人vs魔术总决赛数据 编辑:程序博客网 时间:2024/05/16 00:58
- 题目地址:http://ac.jobdu.com/problem.php?pid=1346
元旦佳节快到了,超市A想要给会员一些奖品。但是奖品有限,所以它需要给这些会员做一个排序,然后将名单输出来。排序的规则是,先按积分排序,如果会员的积分相同则按他的ID排序,因为ID号小则表示他注册的时间早。
现在某超市有每个会员的ID(ID保证不重复)、积分,它想要请你帮忙给排个序。
输入:
输入有多组数据。
每组第一行输入n(1<=n<=1000),m(1<=m<=50),n表示会员个数,m表示奖品个数;之后N行分别是两个整数id和s,id为这个会员的ID,s代表了这个会员的积分。
输出:
对每组输入输出min(m,n)个获奖的会员ID(按积分降序输出,如果积分相同按ID升序输出),每个会员ID一行。
- 样例输入:
5 31 52 103 34 205 2
- 样例输出:
421
没什么技巧,老老实实排序。
最后输出的时候注意m和n选min。
C++ AC
#include <stdio.h>#include <algorithm>using namespace std;const int maxn = 1002; struct Member{ int id; int score;}members[maxn]; int n,m,i; int min(int x, int y){ return x < y ? x : y;} bool cmp(Member s1 , Member s2){ if(s1.score == s2.score){ return s1.id < s2.id; }else { return s1.score > s2.score; }}int main(){ while(scanf("%d%d",&n,&m) != EOF){ for(i = 0; i < n; i++){ scanf("%d %d",&members[i].id,&members[i].score); } sort(members, members+n, cmp); int tmp = min(n,m); for(i = 0; i < tmp; i++){ printf("%d\n",members[i].id); } } return 0;}/************************************************************** Problem: 1346 User: wangzhenqing Language: C++ Result: Accepted Time:100 ms Memory:1028 kb****************************************************************/
Java AC
import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.StreamTokenizer;import java.util.Arrays; public class Main { /* * 1061 */ public static void main(String[] args) throws Exception { StreamTokenizer st = new StreamTokenizer(new BufferedReader( new InputStreamReader(System.in))); while (st.nextToken() != StreamTokenizer.TT_EOF) { int n = (int) st.nval; st.nextToken(); int m = (int) st.nval; Member members[] = new Member[n]; for (int i = 0; i < n; i++) { st.nextToken(); int id = (int) st.nval; st.nextToken(); int s = (int) st.nval; Member member = new Member(id, s); members[i] = member; } Arrays.sort(members); int tmp = Math.min(n, m); for (int i = 0; i < tmp; i++) { System.out.println(members[i].getId()); } } } } class Member implements Comparable<Member>{ private int id ; private int s; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getS() { return s; } public void setS(int s) { this.s = s; } public Member(int id, int s) { super(); this.id = id; this.s = s; } public int compareTo(Member o) { if (this.getS()!=o.getS()) { return o.getS() - this.getS(); }else { return this.getId() - o.getId(); } } } /************************************************************** Problem: 1346 User: wangzhenqing Language: Java Result: Accepted Time:2810 ms Memory:50996 kb****************************************************************/
- 【九度】题目1346:会员积分排序
- 九度题目1346:会员积分排序
- 题目1346:会员积分排序
- 九度OJ 1346:会员积分排序 (排序)
- 九度笔记之 1346:会员积分排序
- 会员积分排序
- 九度题目1202:排序
- 九度题目1202:排序
- 九度 题目1202:排序
- 【九度】题目1202:排序
- 九度OJ 题目1066:字符串排序
- 九度OJ 题目1196:成绩排序
- 九度OJ 题目1135:字符串排序
- 九度OJ 题目1130:日志排序
- 九度题目:字符串排序(1135)
- 【九度】题目1007:奥运排序问题
- 【九度】题目1023:EXCEL排序
- 【九度】题目1061:成绩排序
- 查看centos版本方法
- 黑马程序员_java基础学习笔记之排序算法(选择排序、冒泡排序
- java常用类
- 二分归并排序
- Clojure 学习入门(7)—— 连接mysql
- 【九度】题目1346:会员积分排序
- 自动锁代码参考
- 基于visual Studio2013解决C语言竞赛题之1037数组求列和
- Android滑动效果入门篇———ViewFlipper实现滑动效果
- 个人刚接触开发常见错误
- ZigBee协议分析仪Smart PacketSniffer
- hadoop 的Configuration 配置的使用。
- Android Intent\IntentFilter 详解
- linux下软件安装分类