90求救,样例6没过

P1167 刷题

tanyanling @ 2021-09-14 18:38:30

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char a[17],b[17];
    int n,c[5001],a1[6]={},b1[6]={},a2=0;
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>c[i];
    cin>>a;
    cin>>b;
    for(int i=3;i>=0;i--)
    {
        a1[1]+=(a[i]-'0')*pow(10,3-i);
        b1[1]+=(b[i]-'0')*pow(10,3-i);
    }
    for(int i=6;i>=5;i--)
    {
        a1[2]+=(a[i]-'0')*pow(10,6-i);
        b1[2]+=(b[i]-'0')*pow(10,6-i);
    }
    for(int i=9;i>=8;i--)
    {
        a1[3]+=(a[i]-'0')*pow(10,9-i);
        b1[3]+=(b[i]-'0')*pow(10,9-i);
    }
    for(int i=12;i>=11;i--)
    {
        a1[4]+=(a[i]-'0')*pow(10,12-i);
        b1[4]+=(b[i]-'0')*pow(10,12-i);
    }
    for(int i=15;i>=14;i--)
    {
        a1[5]+=(a[i]-'0')*pow(10,15-i);
        b1[5]+=(b[i]-'0')*pow(10,15-i);
    }
    /*for(int i=1;i<=5;i++)
    cout<<a1[i]<<" "<<b1[i]<<endl;*/
    for(int i=a1[1]+1;i<b1[1];i++)
    {
        if(i%4==0&&i%100!=0)
        {
            a2+=366;
        }
        else if(i%400==0)
        {
            a2+=366;
        }
        else
            a2+=365;
    }
    if(a1[1]==b1[1])
    {
        for(int i=a1[2]+1;i<b1[2];i++)
            if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
                a2+=31;
            else if(i!=2)
                a2+=30;
            else if((a1[2]%4==0&&a1[2]%100!=0)||a1[2]%400==0)
                a2+=29;
            else
                a2+=28;
        if(a1[2]==b1[2])
        {
            for(int i=a1[3]+1;i<b1[3];i++)
                a2++;
            a2=a2*24;
            if(a1[3]==b1[3])
            {
                for(int i=a1[4]+1;i<b1[4];i++)
                    a2++;
                a2=a2*60;
                if(a1[4]==b1[4])
                    for(int i=a1[5];i<b1[5];i++)
                        a2++;
                else
                {
                    for(int i=a1[5];i<60;i++)
                        a2++;
                    for(int i=0;i<b1[5];i++)
                        a2++;
                }
            }
            else
            {
                for(int i=a1[4]+1;i<24;i++)
                    a2++;
                for(int i=1;i<b1[4];i++)
                    a2++;
                a2=a2*60;
                for(int i=a1[5];i<60;i++)
                    a2++;
                for(int i=0;i<b1[5];i++)
                    a2++;
            }
        }
        else
        {
            if(a1[2]==1||a1[2]==3||a1[2]==5||a1[2]==7||a1[2]==8||a1[2]==10||a1[2]==12)
                for(int i=a1[3]+1;i<=31;i++)
                    a2++;
            else if(a1[2]!=2)
                for(int i=a1[3]+1;i<=30;i++)
                    a2++;
            else if((a1[2]%4==0&&a1[2]%100!=0)||a1[2]%400==0)
                for(int i=a1[3]+1;i<=29;i++)
                    a2++;
            else
                for(int i=a1[3]+1;i<=28;i++)
                    a2++;
            for(int i=1;i<b1[3];i++)
                a2++;
            a2=a2*24;
            for(int i=a1[4]+1;i<=24;i++)
                a2++;
            for(int i=1;i<b1[4];i++)
                a2++;
            a2=a2*60;
            for(int i=a1[5];i<60;i++)
                a2++;
            for(int i=0;i<=b1[5];i++)
                a2++;
        }
    }
    else 
    {
        for(int i=a1[2]+1;i<=12;i++)
            if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
                a2+=31;
            else if(i!=2)
                a2+=30;
            else if((a1[2]%4==0&&a1[2]%100!=0)||a1[2]%400==0)
                a2+=29;
            else
                a2+=28;
        for(int i=1;i<b1[2];i++)
            if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
                a2+=31;
            else if(i!=2)
                a2+=30;
            else if((a1[2]%4==0&&a1[2]%100!=0)||a1[2]%400==0)
                a2+=29;
            else
                a2+=28;
        if(a1[2]==1||a1[2]==3||a1[2]==5||a1[2]==7||a1[2]==8||a1[2]==10||a1[2]==12)
            for(int i=a1[3]+1;i<=31;i++)
                a2++;
            else if(a1[2]!=2)
                for(int i=a1[3]+1;i<=30;i++)
                    a2++;
            else if((a1[2]%4==0&&a1[2]%100!=0)||a1[2]%400==0)
                for(int i=a1[3]+1;i<=29;i++)
                    a2++;
            else
                for(int i=a1[3]+1;i<=28;i++)
                    a2++;
            for(int i=1;i<b1[3];i++)
                a2++;
        a2=a2*24;
        for(int i=a1[4]+1;i<=24;i++)
            a2++;
        for(int i=1;i<b1[4];i++)
            a2++;
        a2=a2*60;
        for(int i=a1[5];i<60;i++)
            a2++;
        for(int i=0;i<=b1[5];i++)
            a2++;//cout<<a2<<endl;
    }
    //cout<<a2<<endl;
    sort(c,c+n);
    int num=0;
    for(int i=1;i<=n;i++)
    {
        num+=c[i];
        if(num>a2)
        {
            cout<<i-1;
            return 0;
        }
        if(num==a2)
        {
            cout<<i;
            return 0;
        }
        if(num<a2&&i==n)
        {
            cout<<i;
            return 0;
        }
    }
}

by tanyanling @ 2021-09-14 18:46:45

我严重怀疑样例6有问题


|