Задача "Moving Target" минава на 40/100
Здравейте,
Моля за съдействие, в "judge" ми дава 40/100. Прегледах доста решения, но не намирам къде греша. Моя код е:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;
public class ExMitExamMovingTarget {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<Integer> input = Arrays.stream(scanner.nextLine().split("\\s+"))
.map(Integer::parseInt)
.collect(Collectors.toList());
String[] command = scanner.nextLine().split("\\s+");
while (!command[0].equals("End")) {
String task = command[0];
int index = Integer.parseInt(command[1]);
switch (task) {
case("Shoot"):
if (index>=0&&index<input.size()) {
int power = Integer.parseInt(command[2]);
int workNum = input.get(index);
workNum=workNum-power;
if(workNum>0) {
input.set(index,workNum);
} else {
input.remove(index);
}
} else {
break;
}
break;
case ("Add"):
if (index>=0&&index<input.size()) {
int value = Integer.parseInt(command[1]);
input.add(index,value);
} else {
System.out.println("Invalid placement!");
}
break;
case ("Strike"):
if (index>=0&&index<input.size()) {
int value = Integer.parseInt(command[2]);
int end = index+value;
int start = index-value;
if (start>=0&&end<input.size()) {
for (int i = start; i <= end; i++) {
input.remove(start);
}
} else {
System.out.println("Strike missed!");
}
}
break;
}
command = scanner.nextLine().split("\\s+");
}
List<String> toPrint = new ArrayList<>();
for (int i = 0; i < input.size(); i++) {
toPrint.add(String.valueOf(input.get(i)));
}
System.out.println(String.join("|",toPrint));
}
}
Благодаря предварително за съдействието.
Спорен ден.
Здравей,
Благодаря за детайлното обяснение и отделеното време.
Пламен