Я мог бы помочь с упражнением Каттис Наблюдение за соседством .Я провал на 11-м тесте из-за неправильного ответа, и я понятия не имею, почему.Любая помощь приветствуется.
Дженнифер была назначена капитаном районного дозора и теперь отвечает за управление часами для ее улицы.
Улица Дженнифер состоит из домов только на одной стороне дороги,У нее есть план того, какие дома будут охранять район, и она хочет знать, насколько безопасен этот план.Прогулка от одного дома к другому дому (не обязательно отдельному) считается безопасной, если на прогулке есть хотя бы один дом, который является домом наблюдения за окрестностями.Рейтинг безопасности плана - это количество безопасных прогулок на улице.Поскольку прогулка является либо безопасной, либо небезопасной, при движении в любом направлении она не учитывается дважды в рейтинге безопасности.
Сообщите Дженнифер рейтинг безопасности ее плана.Входные данные
В первой строке входных данных содержатся два целых числа N (1≤N≤200000), которое представляет собой количество домов на улице, и K (0≤K≤N), которое представляет собой число окрестностей.смотреть дома в плане Дженнифер.Дома пронумерованы 1,…, N.
Следующие K строк описывают соседские сторожевые дома.Каждая из этих строк содержит одно целое число H (1≤H≤N), которое является номером дома соседнего домика наблюдения.Номера домов приведены в строго возрастающем порядке.
Выход
Отображение рейтинга безопасности ее системы (отображение количества возможных безопасных прогулок).
public class NeighborhoodWatch {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String first[] = br.readLine().split(" ");
int n = Integer.parseInt(first[0]);
int k = Integer.parseInt(first[1]);
int ks[] = new int[k];
int x=0;
int y=k;
while (y>0) {
ks[x] = Integer.parseInt(br.readLine());
x++;
y--;
}
Arrays.sort(ks);
long count = 0;
//This loop runs through the safe houses(if they exist).
//It takes the remaining number of houses from the sad house onwards and multiplies it with the number of houses since the previous safe house. Which should be correct. And with a special case for the first one where you multiply by the number of houses to the first house on the street.
if (k>0) {
count = (n-ks[0]+1)*ks[0];
for(int i=1;i<k;i++) {
count += (n-ks[i]+1)*(ks[i]-ks[i-1]);
}
}
System.out.println(count);
}
}
Пример: Ввод:
5 2
1
4
Ожидаемый вывод:
11
I'mположить его в черный ящик для тестирования, и я прошел первые 10, но на 11-м получил неправильный ответ.Итак, я предполагаю, что это какой-то случай, о котором я думаю.