60tps 悬关
查看原帖
60tps 悬关
1327857
Endless_summer楼主2024/8/14 14:29

WA on #5 #6 #9 #10 万分感谢调代码的dalao Thanks♪(・ω・)ノ

(本人自闭了 交了6次 2次30 4次60,感觉问题在前面算时间上 手算看出问题了但是本蒟蒻不会改 毕竟是蒟蒻)

#include<bits/stdc++.h>
using namespace std;
int T[5005];
int d[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool ryear(int year){
	if(!year%4&&year%100||!year%400) return 1;
	else return 0;
}
int main()
{
	int n,m=0,dd=0;
	cin>>n;
	for(int i=1; i<=n; i++) cin>>T[i];
	int year1,month1,day1,h1,min1;
	int year2,month2,day2,h2,min2;
	scanf("%d-%d-%d-%d:%d",&year1,&month1,&day1,&h1,&min1);
	scanf("%d-%d-%d-%d:%d",&year2,&month2,&day2,&h2,&min2);
	unsigned long long minute1=0;
	minute1=min1+h1*60+(day1-1)*24*60;
	for(int i=1; i<=month1-1; i++) minute1+=d[month1]*24*60;
	if(ryear(year1)&&month1-1>=2) minute1+=24*60;
	for(int i=0; i<=year1; i++) 
	{
		if(ryear(i)) minute1+=366*24*60;
		else minute1+=365*24*60;
	}
	unsigned long long minute2=0;
	minute2=min2+h2*60+(day2-1)*24*60;
	for(int i=1; i<=month2-1; i++) minute2+=d[month2]*24*60;
	if(ryear(year2)&&month2-1>=2) minute2+=24*60;
	for(int i=0; i<=year2; i++) 
	{
		if(ryear(i)) minute2+=366*24*60;
		else minute2+=365*24*60;
	}
	m=minute2-minute1;
	sort(T+1,T+n+1);
	long long sum=0;int p=0;
	for(int i=1; i<=n; i++){
		sum+=T[i];
		if(sum>m){
			p=i-1;break;
		}
		else if(sum==m){
			p=i;break;
		}
	}
	if(!p) cout<<n;
	else cout<<p;
	return 0;
}
2024/8/14 14:29
加载中...