50pts 不知为什么出现负数了
  • 板块P1167 刷题
  • 楼主A宋锦瑞A
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/7/11 10:06
  • 上次更新2023/11/3 10:36:26
查看原帖
50pts 不知为什么出现负数了
467443
A宋锦瑞A楼主2023/7/11 10:06
#include <bits/stdc++.h>

using namespace std;

int s[1001],e[1001];
int n;
long long times;
int ans;
int a[10010];

int m[1024]= {0,31,28,31,30,31,30,31,31,30,31,30,31};

bool check(int x) {
	return (x%400==0||(x%4==0&&x%100!=0));
}

int main() {
	scanf("%d",&n);
	for(int i=0; i<n; i++) {
		scanf("%d",&a[i]);
	}
	sort(a,a+n);
	scanf("%d-%d-%d-%d:%d",&s[0],&s[1],&s[2],&s[3],&s[4]);
	scanf("%d-%d-%d-%d:%d",&e[0],&e[1],&e[2],&e[3],&e[4]);
	for(int i=s[0]; i<e[0]; i++) {
		if(check(i)) {
			times+=366;
		} else {
			times+=365;
		}
	}
	if(check(s[0])) {
		m[2]=29;
	} else {
		m[2]=28;
	}
	for(int i=1; i<s[0]; i++) {
		times-=m[i];
	}
	for(int i=1; i<e[0]; i++) {
		times+=m[i];
	}
	for(int i=1; i<s[1]; i++) {
		times--;
	}
	for(int i=1; i<e[1]; i++) {
		times++;
	}
	times=times*24*60;
	times-=60*s[3]+s[4];
	times+=60*e[3]+e[4];
	for(int i=0; i<n; i++) {
		if(times>=a[i]) {
			times-=a[i];
			ans++;
		} else {
			break;
		}
	}
	printf("%d",ans);

	return 0;
}
/*
2007 05 31 11 59
2008 04 01 12 00
*/
2023/7/11 10:06
加载中...