60分求助

P1167 刷题

huozhenyi @ 2023-11-15 21:10:41

#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;
}

|