ZOJ List the Books 水~
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1727
题目大意:
给你书名、出版时间、价格,让你按照一定的顺序排序。。
其中题目会给出优先级最高的,剩下两个按书名优先级>出版时间>价格来排序。
思路:
练习sort重载的。。。
不过sort(book,book+n,cmp_by_name);的重载函数竟然不能用引用。。不然会cp好吧,我习惯写重载<运算符了。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN=100+2;
struct Book
{
char name[MAXN];
int year,price;
}book[MAXN]; bool cmp_by_name(Book a,Book b)
{
int k=strcmp(a.name,b.name);
if(k < 0)
return true;
else if(k > 0)
return false; return a.year < b.year || (a.year==b.year && a.price<b.price);
} bool cmp_by_price(Book a,Book b)
{
if(a.price < b.price)
return true;
else if(a.price > b.price)
return false; int k=strcmp(a.name,b.name);
if(k < 0)
return true;
else if(k > 0)
return false; return a.year<b.year;
} bool cmp_by_year(Book a,Book b)
{
if(a.year < b.year)
return true;
else if(a.year > b.year)
return false; int k=strcmp(a.name,b.name);
if(k < 0)
return true;
else if(k > 0)
return false; return a.price<b.price;
}
int main()
{
int n;
int kase=0;
while(~scanf("%d",&n),n)
{
if(kase++)
puts(""); for(int i=0;i<n;i++)
scanf("%s%d%d",book[i].name,&book[i].year,&book[i].price); char cmd[20];
scanf("%s",cmd);
if(strcmp(cmd,"Name")==0)
sort(book,book+n,cmp_by_name);
else if(strcmp(cmd,"Year")==0)
sort(book,book+n,cmp_by_year);
else if(strcmp(cmd,"Price")==0)
sort(book,book+n,cmp_by_price); for(int i=0;i<n;i++)
printf("%s %d %d\n",book[i].name,book[i].year,book[i].price);
}
return 0;
}
ZOJ List the Books 水~的更多相关文章
- ZOJ 2723 Semi-Prime ||ZOJ 2060 Fibonacci Again 水水水!
两题水题: 1.如果一个数能被分解为两个素数的乘积,则称为Semi-Prime,给你一个数,让你判断是不是Semi-Prime数. 2.定义F(0) = 7, F(1) = 11, F(n) = F( ...
- ZOJ 3827 Information Entropy 水
水 Information Entropy Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge Informati ...
- ZOJ 3819 Average Score 水
水 Average Score Time Limit: 2 Seconds Memory Limit: 65536 KB Bob is a freshman in Marjar Univer ...
- ZOJ Special AC String 水
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3702 题目大意: 对于给定的一个字符串,满足如下要求输出AC,否则WA(好吧我 ...
- ZOJ 3168 Sort ZOJ7 水
再水一发,舍友肿么还在睡T T. ---------------------------------舍友还在睡觉的分割线--------------------------------- http:/ ...
- ZOJ 2514 Generate Passwords 水
啦啦啦,水一发准备去复习功课~ ------------------------------------------水一发的分割线----------------------------------- ...
- ZOJ 3827 Information Entropy 水题
Information Entropy Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.zju.edu.cn/onlinejudge/sh ...
- ZOJ 2002 Copying Books 二分 贪心
传送门:Zoj2002 题目大意:从左到右把一排数字k分,得到最小化最大份,如果有多组解,左边的尽量小. 思路:贪心+二分(参考青蛙过河). 方向:从右向左. 注意:有可能最小化时不够k分.如 ...
- ZOJ 3846 GCD Reduce//水啊水啊水啊水
GCD Reduce Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge You are given a sequ ...
随机推荐
- Android ijkplayer在windows下编译并导入Android Studio
我是看着里面的步骤来做的,由于我自己对Linux环境和命令不熟悉,导致我对Cygwin的知识为零,在编译ijkplayer的时候走了一点弯路,需要的同学先去看一下上面的这篇文章,我这边是对上面文章做 ...
- js深拷贝的实现方式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Linux 创建新用户并添加到sudo用户组
附上一份相当奢华的文档: https://www.cnblogs.com/jxhd1/p/6528574.html 添加用户到组 usermod -a -G sudo newone
- 今日题解------codeforce 893d
题意:给你一个数列,小于零表示表示信用卡里取出钱,大于零表示信用卡里存钱,等于零表示要查询信用卡, 如果被查到信用卡里的钱小于零,那你就GG,或者在任何时候你的信用卡里的钱大于d的话(不需要找ai等于 ...
- HDU——T 1711 Number Sequence
http://acm.hdu.edu.cn/showproblem.php?pid=1711 Time Limit: 10000/5000 MS (Java/Others) Memory Lim ...
- eclipse- MAT安装及使用
1.安装eclipse mat插件 1)查看当前eclipse版本 进入eclipse目录:右击eclipse图标,看到安装目录/home/zhangshuli/adt-bundle-linux-x8 ...
- 逐步配置企业版Symantec Norton防病毒服务器
逐步配置企业版Symantec Norton防病毒服务器 配置企业版Symantec Norton NT操作系统,已经安装IIS 安装Symantec Norton 10 安装系统中心 650) th ...
- 洛谷 P1416 攻击火星
P1416 攻击火星 题目描述 一群外星人将要攻击火星. 火星的地图是一个n个点的无向图.这伙外星人将按照如下方法入侵,先攻击度为0的点(相当于从图中删除掉它),然后是度为1的点,依此类推直到度为n- ...
- C#操作session的类实例
本文实例讲述了C#操作session的类.分享给大家供大家参考.具体分析如下: 这个C#类对session操作进行了再次封装,可以大大简化session的常用操作,同时这个类可以将session值设置 ...
- h.264硬件解码
// H264HWDecoder.m // H264EncoderDecoder // // Created by lujunjie on 2016/11/28. // Copyright © 201 ...