全 TLE,但洛谷IDE测出来最多23 ms ,Dev 也差不多。 结果提交上去就这样了。
求大佬解答!
代码:
#include<bits/stdc++.h>
#include<string>
using namespace std;
long long n,t,ch,len;
string sta,stb;
struct node{
long long num;
string time;
string book;
};
node a[1010];
void zh(long long f[10]){
f[1]+=t;
if(t>=0){
if(f[1]>=1000) f[2]+=f[1]/1000,f[1]%=1000;
if(f[2]>=60) f[3]+=f[2]/60,f[2]%=60;
if(f[3]>=60) f[4]+=f[3]/60,f[3]%=60;
}else{
long long sum=0;
if(f[1]<0){
sum=abs(f[1])/1000;
if(abs(f[1])%1000!=0) sum++,f[1]=1000-abs(f[1])%1000;
else f[1]=0;
f[2]-=sum;
}
if(f[2]<0){
sum=abs(f[2])/60;
if(abs(f[2])%60!=0) sum++,f[2]=60-abs(f[2])%60;
else f[2]=0;
f[3]-=sum;
}
if(f[3]<0){
sum=abs(f[3])/60;
if(abs(f[3])%60!=0) sum++,f[3]=60-abs(f[3])%60;
else f[3]=0;
f[4]-=sum;
}
}
}
void pd(string sta,int k){
string st=sta+':';
long long sum1=0,x=4,y=4;
long long f1[10]={0},f2[10]={0};
for(int i=0;i<st.size();i++){
if(i==13) i=17;
if(st[i]==':'||st[i]==','||st[i]==' '){
if(x>0) f1[x]=sum1,x--;
else f2[y]=sum1,y--;
sum1=0;
}else sum1=sum1*10+(st[i]-48);
}
zh(f1);
zh(f2);
cout<<a[k].num<<endl;
printf("%02lld:%02lld:%02lld,%03lld --> %02lld:%02lld:%02lld,%03lld\n",f1[4],f1[3],f1[2],f1[1],f2[4],f2[3],f2[2],f2[1]);
cout<<a[k].book<<endl;
if(k<n) cout<<endl;
else cout<<"#";
}
bool check(char c){
return (c>='a'&&c<='z'||c>='A'&&c<='Z'||c==' '||c==','||c=='?'||c=='!'||c=='.');
}
int main(){
while(1){
n++;
cin>>a[n].num;
getchar();
getline(cin,a[n].time);
while(1){
getline(cin,sta);
if(sta[0]=='#'||check(sta[0])==0) break;
if(a[n].book.empty()) a[n].book+=sta;
else a[n].book+='\n'+sta;
}
if(sta[0]=='#') break;
}
cin>>t;
for(int i=1;i<=n;i++) pd(a[i].time,i);
return 0;
}