全wa样例都过了,求助
查看原帖
全wa样例都过了,求助
246331
mystic_qwq楼主2023/5/13 14:42
c,s[2000],l,p1,p2,p3;
#define f1(a,b)for(int i=a;i<b;i++)
#define f1s(a,b)for(int i=a;i>b;i--)
#define f2(a)for(int j=0;j<a;j++)
_Bool judge(a,b){
  return(isdigit(a)&&isdigit(b))||(isalpha(a)&&isalpha(b));
}
pa(a,b){
  if(p1==1){
    if(p3==1)
      f1(a+1,b)
        f2(p2)
          s[l++]=i;
    else 
      f1s(b-1,a)
        f2(p2)
          s[l++]=i;   
  } else {
    if(p1==2){
      if(p3==1)
        f1(a+1+'A'-'a',b+'A'-'a')
          f2(p2)
            s[l++]=i;
      else
        f1s(b-1+'A'-'a',a+'A'-'a')
          f2(p2)
            s[l++]=i;
      
    } else {
      f2(p2*(b-1-a-1+1))
        s[l++]='*';
    }
  }
  s[l++]=b;
}
pd(a,b){
  if(p1^3){
    if(p3==1)
      f1(a+1,b)
        f2(p2)
          s[l++]=i;
    else 
      f1s(b-1,a)
        f2(p2)
          s[l++]=i;
    
  } 
  else 
    f2(p2*(b-a-1))
      s[l++]='*';
  s[l++]=b;
}
main(){
  scanf("%d%d%d",&p1,&p2,&p3);
  while(read(0,&c,1)){
    if(c=='-'){
      char t;read(0,&t,1);
      if(t<=s[l-1]||!judge(t,s[l-1])){
        s[l++]='-',s[l++]=t;
        continue;
      } else {
        if(isalpha(t))
          pa(s[l-1],t);
        else if(isdigit(t))
          pd(s[l-1],t);
      }
    } else {
      if(isalpha(c)||isdigit(c))
        s[l++]=c;
    }
  }
  for(int i=0;i<l;i++)
    putchar(s[i]);
}
2023/5/13 14:42
加载中...