Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import java.util.stream.Collectors;
- public class GrainsOfSand {
- public static void main(String[] args) throws IOException {
- BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
- List<Integer> nums = Arrays.stream(read.readLine().split("\\s+")).map(Integer::parseInt).collect(Collectors.toList());
- String input;
- while (!"Mort".equals(input=read.readLine())){
- String[] com = input.split("\\s+");
- switch (com[0]){
- case "Add":
- nums.add(Integer.valueOf(com[1]));
- break;
- case "Remove":
- int num = Integer.parseInt(com[1]);
- if (nums.contains(Integer.valueOf(com[1]))){
- removeFirstValue(nums,num);
- }else {
- if (num>=0&&num<nums.size()-1){
- nums.remove(num);
- }
- }
- break;
- case "Replace":
- if (nums.contains(Integer.valueOf(com[1]))){
- replaceFirstFindElement(nums,Integer.parseInt(com[1]),Integer.parseInt(com[2]));
- }
- break;
- case "Increase":
- List<Integer> result = new ArrayList<>();
- if (nums.contains(Integer.valueOf(com[1]))){
- int minNum = Integer.parseInt(com[1]);
- int increaseNum = Integer.MIN_VALUE;
- for (Integer integer : nums) {
- if (integer >= minNum) {
- increaseNum = integer;
- break;
- }
- }
- for (Integer integer : nums) {
- result.add(integer + increaseNum);
- }
- nums=result;
- }else {
- int increaseNum = nums.get(nums.size()-1);
- for (Integer number : nums) {
- result.add(number+increaseNum);
- }
- nums=result;
- }
- break;
- case "Collapse":
- int min = Integer.parseInt(com[1]);
- nums=nums.stream().filter(e->e>=min).collect(Collectors.toList());
- break;
- }
- }
- System.out.println(nums.toString().replaceAll("[\\[\\],]",""));
- }
- private static void replaceFirstFindElement(List<Integer> nums, int searchNum,int replaceNum) {
- for (int i = 0; i < nums.size(); i++) {
- if (nums.get(i)==searchNum){
- nums.set(i,replaceNum);
- break;
- }
- }
- }
- private static void removeFirstValue(List<Integer> nums, int num) {
- for (int i = 0; i < nums.size(); i++) {
- if (nums.get(i)==num){
- nums.remove(i);
- break;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement