不管怎么改都是零分 TUT
#include<bits/stdc++.h>
using namespace std;
long long q,y=-4713,r=1,d=0,month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool flag=false;
struct node
{
long long x,num;
}a[100001];
long long xx[100001],yy[100001],zz[100001];
bool cmp(node a,node b)
{
return a.x<b.x;
}
long long year(long long x)
{
if(x<=1582) x-=1;
if(x<=1582) return x%4==0? 29:28;
if(x%400==0||x%4==0&&x%100!=0) return 29;
return 28;
}
void fun(long long x)
{
d+=x;
while(d>=year(r>2? y+1:y)+337) d-=year(y)+337,y++;
month[2]=year(y);
while(d>month[r]){
d-=month[r];
r++;
if(r>12) r=1;
}
if(y*10000+r*100+d>15821005&&flag==false) flag=true,d+=10;
while(d>=year(y)+337) d-=year(y)+337,y++;
month[2]=year(y);
while(d>=month[r]){
d-=month[r];
r++;
if(r>12) r=1;
}
if(y>=0) y++;
}
int main()
{
scanf("%lld",&q);
for(int i=1;i<=q;i++){
scanf("%lld",&a[i].x);
a[i].num=i;
}
sort(a+1,a+q+1,cmp);
y=-4713,r=1,d=1;
for(int i=1;i<=q;i++){
fun(a[i].x-a[i-1].x);
xx[a[i].num]=y,yy[a[i].num]=r,zz[a[i].num]=d;
}
for(int i=1;i<=q;i++){
if(xx[i]<0) printf("%lld %lld %lld BC\n",zz[i],yy[i],abs(xx[i]));
else printf("%lld %lld %lld\n",zz[i],yy[i],xx[i]);
}
return 0;
}