60分求助
  • 板块P1167 刷题
  • 楼主huozhenyi
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/15 21:10
  • 上次更新2023/11/15 22:34:11
查看原帖
60分求助
784944
huozhenyi楼主2023/11/15 21:10
#include <bits/stdc++.h>
using namespace std;
const int N=5010;
int rn[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int pn[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int a[N];
int n;
int n1,y11,r1,s1,f1;
int n2,y2,r2,s2,f2;
int r,s,f;
int ans;
bool pd(int x)
{
	if (x%4==0&&x%100!=0||x%400==0) return true;
	return false;
}
int solve()
{
	int d=0;
	for (int i=n1;i<=n2;i++)
	{
		if (pd(i))
		{
			if (i==n1&&i==n2)
			{
				for (int j=y11;j<=y2;j++)
				{
					if (j==y11&&j==y2)
					{
						for (int k=r1;k<=r2;k++) d++;
					}
					else if (j==y11)
					{
						for (int k=r1;k<=rn[j];k++) d++;
					}
					else if (j==y2)
					{
						for (int k=1;k<=r2;k++) d++;
					}
					else
					{
						for (int k=1;k<=rn[j];k++) d++;
					}
				}
			}
			else if (i==n1)
			{
				for (int j=y11;j<=12;j++)
				{
					if (j==y11)
					{
						for (int k=r1;k<=rn[j];k++) d++;
					}
					else
					{
						for (int k=1;k<=rn[j];k++) d++;
					}
				}
			}
			else if (i==n2)
			{
				for (int j=1;j<=y2;j++)
				{
					if (j==y2)
					{
						for (int k=1;k<=r2;k++) d++;
					}
					else
					{
						for (int k=1;k<=rn[j];k++) d++;
					}
				}
			}
			else
			{
				for (int j=1;j<=12;j++)
				{
					for (int k=1;k<=rn[j];k++) d++;
				}
			}
		}
		else
		{
			if (i==n1&&i==n2)
			{
				for (int j=y11;j<=y2;j++)
				{
					if (j==y11&&j==y2)
					{
						for (int k=r1;k<=r2;k++) d++;
					}
					else if (j==y11)
					{
						for (int k=r1;k<=pn[j];k++) d++;
					}
					else if (j==y2)
					{
						for (int k=1;k<=r2;k++) d++;
					}
					else
					{
						for (int k=1;k<=pn[j];k++) d++;
					}
				}
			}
			else if (i==n1)
			{
				for (int j=y11;j<=12;j++)
				{
					if (j==y11)
					{
						for (int k=r1;k<=pn[j];k++) d++;
					}
					else
					{
						for (int k=1;k<=pn[j];k++) d++;
					}
				}
			}
			else if (i==n2)
			{
				for (int j=1;j<=y2;j++)
				{
					if (j==y2)
					{
						for (int k=1;k<=r2;k++) d++;
					}
					else
					{
						for (int k=1;k<=pn[j];k++) d++;
					}
				}
			}
			else
			{
				for (int j=1;j<=12;j++)
				{
					for (int k=1;k<=pn[j];k++) d++;
				}
			}
		}
	}
	return d;
}
int main()
{
	scanf("%d",&n);
	for (int i=1;i<=n;i++) scanf("%d",&a[i]);
	sort(a+1,a+n+1);
	scanf("%d-%d-%d-%d:%d",&n1,&y11,&r1,&s1,&f1);
	scanf("%d-%d-%d-%d:%d",&n2,&y2,&r2,&s2,&f2);
	r=solve();
	if (f1>f2)
	{
		f2+=60;
		s2--;
		f=f2-f1;
	}
	else f=f2-f1;
	while (s1>s2)
	{
		s2+=24;
		r--;
	}
	s=s2-s1;
	f=f+s*60+r*24*60;
	for (int i=1;i<=n;i++)
	{
		if (f>=a[i]) ans++,f-=a[i];
	}
	printf("%d",ans);
	return 0;
}
2023/11/15 21:10
加载中...