哪错了啊 60分
查看原帖
哪错了啊 60分
1091535
hehe123313楼主2023/12/20 20:09
#include<iostream>
#include<algorithm>
#include<cmath>

using namespace std;
int day[13] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
const int N = 10000;
struct node {
    int y;
    int r;
} a[N];
int n;

bool cmp(node a, node b) {
    if (a.y == b.y)
        return a.r < b.r;
    else
        return a.y < b.y;
}

int make(node a, node b) {
    if(a.y==b.y&&a.r+1==b.r)
        return 0;
    if(a.y==b.y)
        return b.r-a.r+1;
    int num = 0;
    for (int i = a.y + 1; i <= b.y - 1; i++)
        num += day[i];
    num += day[a.y] - a.r - 1 + 1;
    num += b.r - 1;
    return num;
}

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++)
        cin >> a[i].y >> a[i].r;
    if(n==0)
    {
        cout<<86400;
        return 0;
    }
    int ans = 0;
    int dayn = 0;
    for (int i = 1; i <= a[1].y - 1; i++) {
        dayn += day[i];
    }
    ans = max(ans, dayn + a[1].r-1);
    dayn=0;
    for(int i=a[n].y+1;i<=12;i++)
        dayn+=day[i];
      ans=max(ans,dayn+day[a[n].y]-a[n].r-1+1);
    sort(a + 1, a + 1 + n, cmp);
    for (int i = 1; i < n; i++) {
        ans = max(ans, make(a[i], a[i + 1]));
    }
    double num = ans*1.0 * 86400 / 366*1.0;
    cout<<round(num);
    return 0;
}
2023/12/20 20:09
加载中...