Ответ к задаче содержит много (300 000) шестизначных чисел, которые нужно быстро вывести, для этого я использую BufferedWriter, но на одном из тестов часть строки теряется: wrong answer 298290th numbers differ - expected: '78442', found: '78'. Я записал ответ в файл и не нашел там отдельного числа 78. В чем проблема?
Первый раз оказался в такой ситуации, когда нужно выводить такое количество данных, поэтому и писал соответствующе.
import java.util.Scanner;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;
public class Conditioners {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int q = sc.nextInt();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
try {
for (; q > 0; q--) {
int n = sc.nextInt(); int k = sc.nextInt();
int[] a = new int[k]; int[] t = new int[k];
int[] dp = new int[n+1];
for (int i = 1; i < n+1; i++) dp[i] = Integer.MAX_VALUE;
for (int i = 0; i < k; i++) a[i] = sc.nextInt();
for (int i = 0; i < k; i++) {
t[i] = sc.nextInt();
for (int j = a[i]; j >= 0; j--) {
if (dp[j] >= t[i] + Math.abs(a[i] - j)) dp[j] = t[i] + Math.abs(a[i] - j);
else break;
}
for (int j = a[i]; j < n+1; j++) {
if (dp[j] >= t[i] + Math.abs(a[i] - j)) dp[j] = t[i] + Math.abs(a[i] - j);
else break;
}
}
for (int i = 1; i < n+1; i++) {
String s = String.valueOf(dp[i]);
bw.write(s + " ", 0, s.length()+1);
}
System.out.println("");
}
bw.close();
} catch (Exception e) {
}
sc.close();
}
}
Вообще, мне не нравится весь код в блоке try для этой задачи, когда-нибудь напишу отдельный класс, который будет использоваться только для решения задач, который я буду просто копировать в новый файл.