为什么只有60分!

P1167 刷题

Wind23 @ 2021-08-07 12:08:19

SOS!

为什么我的代码只有60分!!!

#include<bits/stdc++.h>

using namespace std;

int sum=0,total=0;

int a[5010];

int main(){

    int n,b,c,d,e,f,v,w,x,y,z;

    int common=0,leap=0;

    scanf("%d",&n);

    for(int i=1;i<=n;i++){

        cin>>a[i];

    }

    scanf("%d-%d-%d-%d:%d",&b,&c,&d,&e,&f);

    scanf("%d-%d-%d-%d:%d",&v,&w,&x,&y,&z);

    if(z>f){

        total+=z-f;

    }

    else if(z==f){

        total+=0;

    }

    else{

        z+=60;

        y--;

        total+=z-f;

    }

    if(y>e){

        total+=(y-e)*60;

    }

    else if(y==e){

        total+=0;

    }

    else{

        y+=24;

        x--;

        total+=(y-e)*60;

    }

    if(v>b){

        for(int i=b;i<v;i++){

            if(i%4==0 && i%100!=0){

                leap++;

            }

            else if(i%400==0){

                leap++;

            }

            else common++;

        }

        total+=leap*527040+common*525600;

    }

    else if(v==b){

        total+=0;

    }

    if(w>c){

        for(int i=c;i<w;i++){

            if(i==2){

                if(i%4==0 && i%100!=0){

                    total+=41760;

                }

                else if(i%400==0){

                    total+=41760;

                }

                else{

                    total+=40320;

                }

            }

            else{

                if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){

                    total+=44640;

                }

                else total+=43200;

            }

        }

    }

    else if(w==c){

        total+=0;

    }

    else{

        for(int i=w;i<c;i++){

            if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){

                    total-=44640;

            }

            else if(i==4||i==6||i==9||i==11){

                total-=43200;

            }

            else{

                if(i==2){

                if(i%4==0 && i%100!=0){

                    total+=41760;

                }

                else if(i%400==0){

                    total+=41760;

                }

                else{

                    total+=40320;

                }

            }

            }

        }

    }

    if(x>d){

        total+=(x-d)*1440;

    }

    else if(x==d){

            total+=0;

        }

    else{

        total+=(d-x)*1440;

    }

    sort(a,a+n);

    for(int i=0;i<n;i++){

        if(total>0){

            total-=a[i];

            sum++;

            if(total<=0){

                sum--;

                break;

            }   

        }

        else break;

    }

    cout<<sum;

    return 0;

}

by vincent06 @ 2021-08-16 22:08:54

你这输入输出有点不匹配啊

for(int i=1;i<=n;i++)
cin>>a[i];//输入
for(int i=0;i<n;i++)
total-=a[i];
sum++;//输出

有点不明白为什么要减多一个零。

而且你空行太多影响人看了, 希望你注意一下


|