50pts玄关

P1167 刷题

Gavinzhou @ 2024-07-02 21:43:34

#include <cstdio>
#include <algorithm>
#define int long long
using namespace std;
int n;
int a[5010];
bool runnian(int y){
    if(y%4==0){
        if(y%100==0){
            if(y%400==0) return 1;
            else return 0;
        }
        return 1;
    }
    return 0;
}
long long change(int y,int m,int d,int h,int min){
    int ans=0;
    if(runnian(y)){
        ans+=527040*y+43776*m+1440*d+60*h+min;

    }else{
        ans+=525600*y+43776*m+1440*d+60*h+min;
    }
    return ans;
}
signed main(){
    int y1,y2,m1,m2,d1,d2,h1,h2,min1,min2;
    scanf("%lld",&n);
    for(int i=0;i<n;i++)
        scanf("%lld",&a[i]);
    scanf("%lld-%lld-%lld-%lld:%lld",&y1,&m1,&d1,&h1,&min1);
    scanf("%lld-%lld-%lld-%lld:%lld",&y2,&m2,&d2,&h2,&min2);
    sort(a,a+n);
    long long cnt=change(y2,m2,d2,h2,min2)-change(y1,m1,d1,h1,min1);
    long long cnt1=0;
    for(int i=0;i<n&&cnt;i++){
        cnt-=a[i];
        cnt1++;
    }
    printf("%lld",cnt1);
    return 0;
}

写了1个小时竟然还wa


by Gavinzhou @ 2024-07-02 21:48:34

自己改了下

#include <cstdio>
#include <algorithm>
#define int long long
using namespace std;
int n;
int a[5010];
bool runnian(int y){
    if(y%4==0){
        if(y%100==0){
            if(y%400==0) return 1;
            else return 0;
        }
        return 1;
    }
    return 0;
}
long long change(int y,int m,int d,int h,int min){
    int ans=0;
    if(runnian(y)){
        ans+=527040*y+43776*m+1440*d+60*h+min;

    }else{
        ans+=525600*y+43776*m+1440*d+60*h+min;
    }
    return ans;
}
signed main(){
    int y1,y2,m1,m2,d1,d2,h1,h2,min1,min2;
    scanf("%lld",&n);
    for(int i=0;i<n;i++)
        scanf("%lld",&a[i]);
    scanf("%lld-%lld-%lld-%lld:%lld",&y1,&m1,&d1,&h1,&min1);
    scanf("%lld-%lld-%lld-%lld:%lld",&y2,&m2,&d2,&h2,&min2);
    sort(a,a+n);
    long long cnt=change(y2,m2,d2,h2,min2)-change(y1,m1,d1,h1,min1);
    long long cnt1=0;
    for(int i=0;i<n&&cnt-a[i]>=0;i++){
        cnt-=a[i];
        cnt1++;
    }
    printf("%lld",cnt1);
    return 0;
}

60pts


|