Theadora @ 2021-11-21 21:09:06
#include<bits/stdc++.h>
using namespace std;
bool runnian(int n)//计算年份是否为闰年
{
if((n%4==0&&n%100!=0)||n%400==0)
return true;
}
int month(int m,int n)//计算m年份的n月有多少天
{
int result=30;
if(n==2)
{
if(runnian(m))
{
result=29;
}
else
{
result=28;
}
}
else if(n==1||n==3||n==5||n==7||n==8||n==10||n==12)
{
result=31;
}
return result;
}
//定义结构
struct Time{
int yyyy;
int mm;
int dd;
int hh;
int min;
};
int main()
{
struct Time time[2];
int N;
cin>>N;
int i;
int count=0;//能做多少题
long long int sum=0; //多少分钟
int minute[i];//每一道题需要的分钟数
for(i=0;i<N;i++)
{
cin>>minute[i];
}
for(i=0;i<N;i++)
{
for(int j=0;j<N-i-1;j++)
{
if(minute[j]>minute[j+1])
{
int temp=minute[j];
minute[j]=minute[j+1];
minute[j+1]=temp;
}
}
}
for(i=0;i<2;i++)//输入数据
{
scanf("%d-%d-%d-%d:%d",&time[i].yyyy,&time[i].mm,&time[i].dd,&time[i].hh,&time[i].min);
}
//以下计算从time【0】到time【1】年一共有多少分钟(包含time【0】,time【1】)
int run=0,norun=0;//闰年和非闰年初始化
if(time[1].yyyy==time[0].yyyy)
{
if(runnian(time[1].yyyy))
{
sum+=366*24*60;//闰年的话分钟数+366*24*60
}
else
{
sum+=365*24*60;//非闰年的话分钟数+365*24+60
}
}
else if(time[1].yyyy>time[0].yyyy)
{
for(i=time[0].yyyy;i<=time[1].yyyy;i++)
{
if(runnian(i))
{
run++;
}
else
{
norun++;
}
sum+=run*366*24*60+norun*365*24*60;
}
}
//以下计算从一月到time【0】月(不包含time【0】月)的分钟数,用sum减掉
for(i=1;i<time[0].mm;i++)
{
if(i==2)
{
if(runnian(time[0].yyyy))
{
sum-=29*24*60;
}
else
{
sum-=28*24*60;
}
}
else if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
{
sum-=31*24*60;
}
else
{
sum-=30*24*60;
}
}
//以下计算从time【1】月到12月(不包含time【01】月)的分钟数,用sum减掉
for(i=time[1].mm+1;i<=12;i++)
{
if(i==2)
{
if(runnian(time[1].yyyy))
{
sum-=29*24*60;
}
else
{
sum-=28*24*60;
}
}
else if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
{
sum-=31*24*60;
}
else
{
sum-=30*24*60;
}
}
//以下计算从一日到time【0】日(不包含time【0】日)的分钟数,用sum减掉
for(i=1;i<time[0].dd;i++)
{
sum-=24*60;
}
//减掉time【0】日时间之前的分钟数
sum-=(time[0].hh*60+time[0].min);
//以下计算从time【0】日到该月最后一日(不包含time【0】日)的分钟数,用sum减掉
for(i=time[1].dd+1;i<=month(time[1].yyyy,time[1].mm);i++)
{
sum-=24*60;
}
//减掉time【1】日时间到第二天之前的分钟数
sum-=(24*60-time[1].hh*60-time[1].min);
for(i=0;i<N;i++)
{
sum-=minute[i];//每次减掉第i题的分钟数
if(sum>=0)
count++;
else if(sum<0)
break;
}
cout<<count;
return 0;
}