Advertisement
YORDAN2347

Pokemon Don’t Go

Feb 1st, 2021
954
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.21 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace _09._PokemonDon_tGo
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             List<int> numbers = Console.ReadLine()
  12.                 .Split(" ", StringSplitOptions.RemoveEmptyEntries)
  13.                 .Select(int.Parse)
  14.                 .ToList();
  15.  
  16.             List<int> numsToSum = new List<int>(numbers.Count);
  17.  
  18.             while (numbers.Count > 0)
  19.             {
  20.                 int index = int.Parse(Console.ReadLine());
  21.  
  22.                 bool? isInSequence = CheckIndex(index, numbers);
  23.  
  24.                 SwapElements(numbers, isInSequence);
  25.  
  26.                 if (numbers.Count > 0)
  27.                 {
  28.                     index = ChangeIndex(index, isInSequence, numbers.Count);
  29.  
  30.                     RemovePokemon(numbers, index, numsToSum);
  31.                 }
  32.  
  33.             }
  34.  
  35.             Console.WriteLine(numsToSum.Sum());
  36.         }
  37.  
  38.         private static void RemovePokemon(List<int> numbers, int index, List<int> numsToSum)
  39.         {
  40.             // 1. make temp
  41.             int temp = numbers[index];
  42.             // 2. Remove numbers[index]
  43.             numbers.RemoveAt(index);
  44.             // 3. Add temp to sumList
  45.             numsToSum.Add(temp);
  46.  
  47.             for (int i = 0; i < numbers.Count; i++)
  48.             {
  49.                 // 4.1 increase value of smaller elements
  50.                 if (numbers[i] <= temp)
  51.                 {
  52.                     numbers[i] += temp;
  53.                 }
  54.                 // 4.2 decrease value of greater elements
  55.                 else
  56.                 {
  57.                     numbers[i] -= temp;
  58.                 }
  59.             }
  60.         }
  61.  
  62.         private static int ChangeIndex(int index, bool? isInSequence, int lenght)
  63.         {
  64.             if (isInSequence == false)
  65.             {
  66.                 return 0;
  67.             }
  68.             else if (isInSequence == null)
  69.             {
  70.                 return lenght - 1;
  71.             }
  72.             else
  73.             {
  74.                 return index;
  75.             }
  76.         }
  77.  
  78.         private static void SwapElements(List<int> numbers, bool? isInSequence)
  79.         {
  80.             if (isInSequence == false)
  81.             {            
  82.                 int temp = numbers[numbers.Count-1];
  83.                 // 1. Remove first Element
  84.                 numbers.RemoveAt(0);
  85.                 // 2. Copy last element to index[0]
  86.                 numbers.Insert(0, numbers[numbers.Count-1]);
  87.             }
  88.             else if (isInSequence == null)
  89.             {
  90.                 int temp = numbers[0];
  91.                 // 1. Remove last Element
  92.                 numbers.RemoveAt(numbers.Count - 1);
  93.                 // 2. Copy first element to index[last]
  94.                 numbers.Add(temp);
  95.                 numbers.Add(temp);
  96.             }
  97.         }
  98.  
  99.         private static bool? CheckIndex(int index, List<int> numbers)
  100.         {
  101.             if (index < 0)
  102.             {
  103.                 return false;
  104.             }
  105.             else if (index >= numbers.Count)
  106.             {
  107.                 return null;
  108.             }
  109.             else
  110.             {
  111.                 return true;
  112.             }
  113.         }
  114.     }
  115. }
  116.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement