need help to understanding which case it will give WA.
package main
import (“fmt”
“strings”
“strconv”
“bufio”
“os”
“sort”)
func main(){
Scanner := bufio.NewScanner(os.Stdin)
buf := make([]byte,10000001)
Scanner.Buffer(buf,10000001)
Scanner.Scan()
wrong,_ := strconv.Atoi("-1")
T,_ := strconv.Atoi(strings.Trim(Scanner.Text()," “))
for T >0 {
T–
Scanner.Scan()
size,_ :=strconv.Atoi(strings.Trim(Scanner.Text(),” “))
Scanner.Scan()
tempstr := strings.Split(strings.Trim(Scanner.Text(),” “),” ")
if(size != 1){
num := make([]int,0,size)
final := make([]int,0,size)
for i:=0;i<size;i++{
tempnum,_ := strconv.Atoi(tempstr[i])
num = append(num,tempnum)
}
exist := false
cur1 :=0
for i:=size-1;i>0;i--{
if num[i] > num[i-1]{
cur1 = i-1
sort.Ints(num[cur1+1:])
for j:=cur1+1;j<size;j++{
if num[cur1] < num[j]{
final = append(final,num[:cur1]...)
final = append(final,num[j])
final = append(final,num[cur1+1:j]...)
final = append(final,num[cur1])
if j != size-1{
final = append(final,num[j+1:]...)
}
exist = true
break
}
}
break
}
}
if exist {
var mul int64 = 1
var out int64
for i:=size-1;i>=0;i--{
out = out+int64(final[i])*mul
mul = mul*10
}
fmt.Println(out)
}else{
fmt.Println(wrong)
}
}else{
fmt.Println(wrong)
}
}
}