题目描述
有一天,我做了个梦,梦见我很荣幸的接到了猪八戒的邀请,到天宫陪他吃酒。我犹豫了。天上一日,人间一年啊!当然,我是个闲人,一年之中也没有多少时日是必须在人间的,因此,我希望选一个最长的空闲时间段,使我在天上待的时间尽量长。记住,今年是40004000年。天上一天也是2424小时,每小时6060分,每分6060秒。
输入格式
第一行是一个非负整数 N,表示4000年中必须呆在人间的天数。
以下共NN行,每行两个用空格隔开的正整数,即日期(月,日),输入文件保证无错误,日期无重复。
输出格式
一个非负整数,即在天上的时间(四舍五入精确到11秒)。
输入输出样例
输入 #1复制
2
3 8
12 2
输出 #1复制
63266
代码来咯:
#include<iostream>
#include<algorithm>
using namespace std;
int num[66666],ans;
double k;
int f[13]={0,0,31,60,91,121,152,182,213,244,274,305,335};
//预处理每月的天数,注意C++的默认数组下标是从0开始的
int main(){
int i,a,b,n;
cin>>n;
for (i=1; i<=n; i++){
cin>>a>>b;
num[i]+=f[a];
num[i]+=b;//处理天数
}
sort(num+1,num+n+1);//STL模板的sort快排
num[n+1]=367; //一年的末尾(想一想为什么要用367)
for (i=1; i<=n+1; i++){
//注意这里是从1开始循环,因为num数组是在main函数外定义的,所以num[0]值为0,因此可以处理第一段时间
ans=max(num[i]-num[i-1]-1,ans);//ans取最大值
}
k=(ans*1.0*24*3600/366)+0.5;//处理时间,注意四舍五入,加上0.5在换成整数是很常见的方法
ans=k;//强制转化为整数
cout<<ans;//输出,完事
return 0;
}
求点赞加关注!!!!