Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.IO;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Олимпиада
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- int count = 0; //максимальное количество задач, которое Вася сможет решить.
- int N,skill; //N-количество задач, skill-исходное умение
- int[,] items; //1-сколько умения нужно для решения i-й задачи; 2-сколько умения прибавится после решения i-й задачи
- using (StreamReader sr = new StreamReader("input.txt"))
- {
- string[] line = sr.ReadLine().Split(' ');//Читаем первую строку с файла
- N = int.Parse(line[0]);
- skill = int.Parse(line[1]);
- items = new int[N,2];//Инициализируем массивы
- string[] templine;
- for (int i = 0; i < N; i++)//Заполняем массивы всех элементов
- {
- templine = sr.ReadLine().Split(' ');
- items[i, 0] = int.Parse(templine[0]);
- items[i, 1] = int.Parse(templine[1]);
- }
- }
- ParallelSortArray(items, 0, N-1);//Сортируем массив параллельно по первому признаку
- for (int i = 0; i < N; i++)//Проходим по всему массиву.
- {
- if (items[i, 0] <= skill)//Если нужный навык меньше или равен скилу Вовы, то прокачиваем Вову и увеличиваем счётчик задач
- {
- count++;
- skill += items[i, 1];
- }
- else break;//Иначе выходим из цикла, потому что до этого мы отсортировали массив по навыку, который нужен для выполнения iой задачи и в дальнейшем никогда не зайдем в if()
- }
- Console.WriteLine(count);
- Console.ReadKey();
- }
- public static void ParallelSortArray(int[,] items, int leftIndex, int rightIndex)
- {
- var i = leftIndex;
- var j = rightIndex;
- var pivot = items[leftIndex, 0];
- while (i <= j)
- {
- while (items[i, 0] < pivot)
- {
- i++;
- }
- while (items[j, 0] > pivot)
- {
- j--;
- }
- if (i <= j)
- {
- int temp = items[i, 0];
- items[i, 0] = items[j, 0];
- items[j, 0] = temp;
- temp = items[i, 1];
- items[i, 1] = items[j, 1];
- items[j, 1] = temp;
- i++;
- j--;
- }
- }
- if (leftIndex < j)
- ParallelSortArray(items, leftIndex, j);
- if (i < rightIndex)
- ParallelSortArray(items, i, rightIndex);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement