80分OLE求助

P1953 易语言

┭┮﹏┭┮,我也80分了………………
by cqbztz2 @ 2021-09-24 21:09:06


改一改变成TLE ```cpp #include<cstring> #include<algorithm> #include<cstdio> #include<iostream> using namespace std; const int maxn=200005; char opt[maxn],temp1[maxn],temp2[maxn]; int main() { scanf("%s",opt+1); int r1=0,r2=0,l1=10000,l2=10000,len1=0,len2=0,cnt=0,be=0; if(opt[1]=='0'||opt[1]=='1'){ cnt=0,be=opt[1]-'0'; scanf("%s%s",temp1+1,temp2+1); len1=strlen(temp1+1),len2=strlen(temp2+1); while(~scanf("%s",opt+1)) ++cnt; cnt=cnt/2+1; } else{ len1=strlen(opt+1); for(int i=1;i<=len1;++i) temp1[i]=opt[i]; len2=0; for(int i=1;i<=len1;++i){ ++len2; temp2[i]=temp1[i]; if(temp1[i]=='.') break; } scanf("%s",temp2+len2+1); len2=strlen(temp2+1); while(~scanf("%s",opt+1)) ++cnt; cnt/=2; for(int i=1;i<=len1;++i) if(temp1[i]>='0'&&temp1[i]<='9') be=be*10+temp1[i]-'0'; } for(int i=1;i<=len1;++i) if(temp1[i]>='0'&&temp1[i]<='9') l1=min(l1,i),r1=max(r1,i); for(int i=1;i<=len2;++i) if(temp2[i]>='0'&&temp2[i]<='9') l2=min(l2,i),r2=max(r2,i); for(int i=1;i<=cnt;++i){ for(int j=1;j<l1;++j) putchar(temp1[j]); printf("%d",be); for(int j=r1+1;j<=len1;++j) putchar(temp1[j]); printf(" "); for(int j=1;j<l2;++j) putchar(temp2[j]); printf("%d",be); for(int j=r2+1;j<=len2;++j) putchar(temp2[j]); if(i!=cnt) printf("\n"); ++be; } return 0; } ``` 可能要优化 不要输出两次be
by huangjiasheng @ 2022-02-11 10:43:38


|