Advertisement
Guest User

Untitled

a guest
Jan 27th, 2020
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.82 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.IO;
  4. using System.Collections.Generic;
  5.  
  6. namespace slice
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             int maxPizzaSlice;
  13.             List<int> pizzaTypes;
  14.  
  15.             using (FileStream fs = new FileStream("TextFile1.txt", FileMode.Open))
  16.             using (StreamReader sr = new StreamReader(fs))
  17.             {
  18.                 string[] s = sr.ReadLine().Split(' ');
  19.  
  20.                 maxPizzaSlice = int.Parse(s[0]);
  21.  
  22.                 pizzaTypes = sr.ReadLine().Split(' ').Select(x => int.Parse(x)).ToList();
  23.             }
  24.  
  25.  
  26.             int i = 0, j = 0;
  27.  
  28.             Solve(ref i, ref j, pizzaTypes, pizzaTypes.Count);
  29.  
  30.             Console.WriteLine(i);
  31.         }
  32.  
  33.         static void Solve(ref int result, ref int achievedMax, List<int> list, int max, int sum = 0)
  34.         {
  35.             for (int i = list.Count - 1; i >= 0; i--)
  36.             {
  37.                 if (sum + list[i] > max)
  38.                 {
  39.                     list.RemoveAt(i);
  40.                     continue;
  41.                 }
  42.  
  43.                 if (sum + list[i] == max)
  44.                     return;
  45.  
  46.                 if (sum + list[i] > achievedMax)
  47.                     achievedMax = sum + list[i];
  48.  
  49.                 sum += list[i];
  50.  
  51.                 if (list.Count != 1)
  52.                     Solve(ref result, ref achievedMax, list.RemoveAtReturn(i), max, sum);
  53.  
  54.                 sum -= list[i];
  55.                 list.RemoveAt(i);
  56.             }
  57.  
  58.             result = achievedMax;
  59.         }
  60.     }
  61.  
  62.     static class Extension
  63.     {
  64.         public static List<T> RemoveAtReturn<T>(this List<T> list, int index)
  65.         {
  66.             List<T> newList = new List<T>(list);
  67.             newList.RemoveAt(index);
  68.             return newList;
  69.         }
  70.     }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement