Pink_Cut_Tree @ 2023-05-17 17:37:49
#include<iostream>
#include<algorithm>
using namespace std;
int t[5005],n,y1,y2,m1,m2,d1,d2,h1,h2,min1,min2;
int day_of_year(int x){
if(x%4==0){
if(x%4==100){
if(x%400==0){
return 366;
}
else{
return 365;
}
}
else{
return 366;
}
}
else{
return 365;
}
}
int day_of_month(int x,int year){
if(x==1||x==3||x==5||x==7||x==8||x==10||x==12){
return 31;
}
if(x==4||x==6||x==9||x==11){
return 30;
}
if(day_of_year(year)==365){
return 28;
}
return 29;
}
long long minute(int y1,int y2,int m1,int m2,int d1,int d2,int h1,int h2,int min1,int min2){
long long ans=0;
long long day1=0,day2=0;
for(int i=1;i<=y1;i++){
day1+=day_of_year(i);
}
for(int i=1;i<=m1;i++){
day1+=day_of_month(i,y1);
}
day1+=d1;
for(int i=1;i<=y2;i++){
day2+=day_of_year(i);
}
for(int i=1;i<=m2;i++){
day2+=day_of_month(i,y2);
}
day2+=d2;
ans=(day2-day1)*24*60;
//cout<<ans<<"\n";
ans+=(h2-h1)*60;
ans+=min2-min1;
return ans;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>t[i];
}
scanf("%d-%d-%d-%d:%d",&y1,&m1,&d1,&h1,&min1);
scanf("%d-%d-%d-%d:%d",&y2,&m2,&d2,&h2,&min2);
sort(t+1,t+n+1);
long long ans=minute(y1,y2,m1,m2,d1,d2,h1,h2,min1,min2);
int sum=0;
for(int cnt=1;ans>=t[cnt-1];cnt++){
ans-=t[cnt];
sum++;
if(cnt==n){
break;
}
}
cout<<sum;
return 0;
}
by yzm0325 @ 2023-05-18 19:05:24
@PCT2506 给你一组 hack 数据自己调调试试:
1
2
2007-12-31-23:59
2008-01-01-00:00