Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using System.IO;
- using System.Collections.Generic;
- namespace slice
- {
- class Program
- {
- static void Main(string[] args)
- {
- int maxPizzaSlice;
- List<int> pizzaTypes;
- using (FileStream fs = new FileStream("TextFile1.txt", FileMode.Open))
- using (StreamReader sr = new StreamReader(fs))
- {
- string[] s = sr.ReadLine().Split(' ');
- maxPizzaSlice = int.Parse(s[0]);
- pizzaTypes = sr.ReadLine().Split(' ').Select(x => int.Parse(x)).ToList();
- }
- int i = 0, j = 0;
- Solve(ref i, ref j, pizzaTypes, pizzaTypes.Count);
- Console.WriteLine(i);
- }
- static void Solve(ref int result, ref int achievedMax, List<int> list, int max, int sum = 0)
- {
- for (int i = list.Count - 1; i >= 0; i--)
- {
- if (sum + list[i] > max)
- {
- list.RemoveAt(i);
- continue;
- }
- if (sum + list[i] == max)
- return;
- if (sum + list[i] > achievedMax)
- achievedMax = sum + list[i];
- sum += list[i];
- if (list.Count != 1)
- Solve(ref result, ref achievedMax, list.RemoveAtReturn(i), max, sum);
- sum -= list[i];
- list.RemoveAt(i);
- }
- result = achievedMax;
- }
- }
- static class Extension
- {
- public static List<T> RemoveAtReturn<T>(this List<T> list, int index)
- {
- List<T> newList = new List<T>(list);
- newList.RemoveAt(index);
- return newList;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement