Wind23 @ 2021-08-07 12:08:19
为什么我的代码只有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++;//输出
有点不明白为什么要减多一个零。
而且你空行太多影响人看了, 希望你注意一下