Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace _09._PokemonDon_tGo
- {
- class Program
- {
- static void Main(string[] args)
- {
- List<int> numbers = Console.ReadLine()
- .Split(" ", StringSplitOptions.RemoveEmptyEntries)
- .Select(int.Parse)
- .ToList();
- List<int> numsToSum = new List<int>(numbers.Count);
- while (numbers.Count > 0)
- {
- int index = int.Parse(Console.ReadLine());
- bool? isInSequence = CheckIndex(index, numbers);
- SwapElements(numbers, isInSequence);
- if (numbers.Count > 0)
- {
- index = ChangeIndex(index, isInSequence, numbers.Count);
- RemovePokemon(numbers, index, numsToSum);
- }
- }
- Console.WriteLine(numsToSum.Sum());
- }
- private static void RemovePokemon(List<int> numbers, int index, List<int> numsToSum)
- {
- // 1. make temp
- int temp = numbers[index];
- // 2. Remove numbers[index]
- numbers.RemoveAt(index);
- // 3. Add temp to sumList
- numsToSum.Add(temp);
- for (int i = 0; i < numbers.Count; i++)
- {
- // 4.1 increase value of smaller elements
- if (numbers[i] <= temp)
- {
- numbers[i] += temp;
- }
- // 4.2 decrease value of greater elements
- else
- {
- numbers[i] -= temp;
- }
- }
- }
- private static int ChangeIndex(int index, bool? isInSequence, int lenght)
- {
- if (isInSequence == false)
- {
- return 0;
- }
- else if (isInSequence == null)
- {
- return lenght - 1;
- }
- else
- {
- return index;
- }
- }
- private static void SwapElements(List<int> numbers, bool? isInSequence)
- {
- if (isInSequence == false)
- {
- int temp = numbers[numbers.Count-1];
- // 1. Remove first Element
- numbers.RemoveAt(0);
- // 2. Copy last element to index[0]
- numbers.Insert(0, numbers[numbers.Count-1]);
- }
- else if (isInSequence == null)
- {
- int temp = numbers[0];
- // 1. Remove last Element
- numbers.RemoveAt(numbers.Count - 1);
- // 2. Copy first element to index[last]
- numbers.Add(temp);
- numbers.Add(temp);
- }
- }
- private static bool? CheckIndex(int index, List<int> numbers)
- {
- if (index < 0)
- {
- return false;
- }
- else if (index >= numbers.Count)
- {
- return null;
- }
- else
- {
- return true;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement