第一段代码wa,得92分,第二段代码ac,仅仅是读入有所不同,求助大佬,为何如此
#include<stdio.h>
#define P putchar_unlocked
char s[101],g[100],c;
int top,l;
_Bool get[100];
int main(){
for(;(s[l]=(c=getchar_unlocked()))!='\r'&&c!='\n'&&c!=EOF;++l){
!top||c=='('||c=='['?g[++top]=l
:(c==')'&&s[g[top]]=='(')
||(c==']'&&s[g[top]]=='[')?--top:(get[l]=1);
}
//printf("%s",s);
while(top)get[g[top--]]=1;
//for(int i=0;i<l;++i)P((int)get[i]^48);P(10);
for(int i=0;i<l;/*printf("s[%d]=%c,get[%d]=%d\n",i,s[i],i,(int)get[i]),*/++i)
!get[i]?P(s[i])
:(s[i]=='('||s[i]==')') ?P('('),P(')')//must within ()
:(s[i]=='['||s[i]==']')&&(P('['),P(']'));
}
#include<stdio.h>
#define P putchar_unlocked
char s[101],g[100],c;
int top,l;
_Bool get[100];
int main(){
scanf("%s",s),l=strlen(s);
for(int i=0;i<l;++i){
!top||s[i]=='('||s[i]=='['?g[++top]=i
:(s[i]==')'&&s[g[top]]=='(')
||(s[i]==']'&&s[g[top]]=='[')?--top:(get[i]=1);
}
while(top)get[g[top--]]=1;
for(int i=0;i<l;++i)
!get[i]?P(s[i])
:(s[i]=='('||s[i]==')') ?P('('),P(')')//must within ()
:(s[i]=='['||s[i]==']')&&(P('['),P(']'));
}