为什么只有60分???
  • 板块P1167 刷题
  • 楼主lmrttx
  • 当前回复5
  • 已保存回复5
  • 发布时间2021/2/14 14:36
  • 上次更新2023/11/5 03:17:21
查看原帖
为什么只有60分???
344382
lmrttx楼主2021/2/14 14:36

RT,代码如下,long long 开了。

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,t[5001],ans,tot;
int y11,m1,d1,h1,min1;
int y2,m2,d2,h2,min2;
int mon1[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int mon2[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check(int year){
	if(year%4==0){
		if(year%100==0){if(year%400==0)return 1;else return 0;}
		else return 1;
	}else return 0;
}
void work1(){ 
	for(int i=y11;i<y2;i++)if(check(i)){
		tot+=366;
	}else tot+=355;
	return;
}
void work2(){
	for(int i=1;i<m1;i++)if(check(y11))tot-=mon2[i];
	else tot-=mon1[i];
	for(int i=1;i<m2;i++)if(check(y2))tot+=mon2[i];
	else tot+=mon1[i];return;
}
void work3(){
	tot=(tot-d1+d2)*24*60;
	tot=tot-(60*h1+min1)+(60*h2+min2);
	return;
}
signed main(){
	scanf("%lld",&n);for(int i=1;i<=n;i++){
		scanf("%d",&t[i]);
	}
	sort(t+1,t+n+1);
	scanf("%lld-%lld-%lld-%lld:%lld",&y11,&m1,&d1,&h1,&min1);
	scanf("%lld-%lld-%lld-%lld:%lld",&y2,&m2,&d2,&h2,&min2);
	work1();work2();work3();
	for(int i=1;i<=n;i++){
		if(tot>=t[i])tot-=t[i],ans++;
		else break;
	}
	printf("%lld",ans);return 0;
}

谢谢!

2021/2/14 14:36
加载中...