Я принимаю участие в Google Code Jam впервые. Каждый раз, когда я отправляю решение в java, оно показывает ошибку времени выполнения. Те же тесты проходят в локальной IDE. Может ли кто-нибудь помочь мне понять ограничения платформы.
Вопрос заключается в следующем: учитывая строку цифр S, вставьте в нее минимальное количество открывающих и закрывающих скобок, чтобы полученная строка была сбалансированной и каждая di git d находится внутри ровно d пар совпадающих скобок.
Пусть вложенность двух скобок в строке будет подстрокой, которая встречается строго между ними. Говорят, что открывающая и закрывающая круглые скобки, расположенные далее справа от них, совпадают, если их вложенность пуста, или если каждая скобка в их вложенности совпадает с другой круглой скобкой в их вложении. Глубина вложения позиции p - это количество пар совпадающих скобок m, таких что p включено во вложение m.
Например, в следующих строках все цифры соответствуют их глубине вложения: 0 ( (2) 1), (((3)) 1 (2)), ((((4)))), ((2)) ((2)) (1). Первые три строки имеют минимальную длину среди тех, которые имеют одинаковые цифры в том же порядке, но последняя не имеет, так как ((22) 1) также имеет цифры 221 и короче.
Учитывая строку из цифр S найдите другую строку S ', состоящую из скобок и цифр, такую, что: все скобки в S' совпадают с какой-то другой скобкой, удалив любые и все скобки из S ', получая в S, каждая di git в S' равна равна его глубине вложения, а S 'имеет минимальную длину.
Входные данные В первой строке входных данных указано количество тестовых случаев, за которыми следуют T-строки. Каждая строка представляет собой тестовый пример и содержит только строку S.
Выходные данные Для каждого тестового примера выведите одну строку, содержащую Case #x: y, где x - номер тестового набора (начиная с 1), а y - строка S 'определена выше.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collections;
class NestingDepths1
{
public static void main(String[] args) throws NumberFormatException, IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
for (int tt = 0; tt < t; tt++)
{
String s = br.readLine();
int n = s.length();
int brac=0;
StringBuilder sb = new StringBuilder();
for(int i=0;i<n;i++)
{
int val = s.charAt(i)-48;
if(val==brac)
{
sb.append(s.charAt(i));
}
else if(val>brac)
{
int diff = val-brac;
sb.append(generateOpenBraces(diff)).append(s.charAt(i));
brac = brac+diff;
}
else
{
int diff = brac-val;
sb.append(generateCloseBraces(diff)).append(s.charAt(i));
brac=brac-diff;
}
}
if(brac>0)
{
sb.append(generateCloseBraces(brac));
}
System.out.println(sb.toString());
}
System.exit(0);
}
public static String generateOpenBraces(int n)
{
return String.join("", Collections.nCopies(n, "("));
}
public static String generateCloseBraces(int n)
{
return String.join("", Collections.nCopies(n, ")"));
}
}