记录编号 |
1847 |
评测结果 |
AAAAAAAAAA |
题目名称 |
到天宫做客 |
最终得分 |
100 |
用户昵称 |
BYVoid |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.005 s |
提交时间 |
2008-09-08 22:43:13 |
内存使用 |
0.26 MiB |
显示代码纯文本
#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;
}