比赛 NOIP_2 评测结果 AAAAAAAAAA
题目名称 到天宫做客 最终得分 100
用户昵称 BYVoid 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2008-09-08 19:53:54
显示代码纯文本
#include <iostream>
#define MAX 366

using namespace std;

typedef struct
{
	int m,d;
} date;

int N;
date D[MAX];
int md[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};

inline int cmp(const void *a,const void *b)
{
	if (((date *)a)->m < ((date *)b)->m)
		return -1;
	if (((date *)a)->m > ((date *)b)->m)
		return 1;
	if (((date *)a)->d < ((date *)b)->d)
		return -1;
	return 1;
}

void init()
{
	int i;
	freopen("heaven.in","r",stdin);
	freopen("heaven.out","w",stdout);
	cin >> N;
	D[0].m=1;
	D[0].d=0;
	for (i=1;i<=N;i++)
		cin >> D[i].m >> D[i].d;
	D[N+1].m=12;
	D[N+1].d=32;
	qsort(D,N+1,sizeof(D[0]),cmp);
}

int datediff(int a,int b)
{
	if (D[a].m==D[b].m)
		return D[b].d-D[a].d-1;
	int dt=	md[ D[a].m ] - D[a].d + D[b].d -1;
	for (int i=D[a].m+1;i<=D[b].m-1;i++)
		dt+=md[i];
	return dt;
}

void print(int d)
{
	double t=d / 366.0 * 86400.0;
	if (t-(int)t>=0.5)
		cout << (int)t+1;
	else
		cout << (int)t;
}


void solve()
{
	int i,l,maxl=0;
	for (i=1;i<=N+1;i++)
	{
		l=datediff(i-1,i);
		if (l>maxl)
			maxl=l;
	}
	print(maxl);
}

int main()
{
	init();
	solve();
	return 0;
}