TLE
查看原帖
TLE
978188
T21C0637楼主2023/9/30 12:55

全 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;
}
2023/9/30 12:55
加载中...