@keeper_of_the_comp

При решении задачи выбивает runtime error, как решить проблему?

На прямой расположены стойла, в которые необходимо расставить коров так, чтобы минимальное расcтояние между коровами было как можно больше.

Входные данные
В первой строке вводятся числа N (2 < N < 10001) – количество стойл и K (1 < K < N ) – количество коров. Во второй строке задаются N натуральных чисел в порядке возрастания – координаты стойл (координаты не превосходят 109)

Выходные данные
Выведите одно число – наибольшее возможное допустимое расстояние.

Примеры
входные данные
6 3
2 5 7 11 15 20
выходные данные
9

Решение:

//Rextester.Program.Main is the entry point for your code. Don't change it.
//Compiler version 4.0.30319.17929 for Microsoft (R) .NET Framework 4.5

using System;
namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
             int n, k, i, j; 
             long l, r, m, g; 
             long[] x=new long[10101];
			string[] tokens = Console.ReadLine().Split();

             n = int.Parse(tokens[0]);
             k = int.Parse(tokens[1]);
           
            for(i=1; i<=n;i++)
			{ x[i] = int.Parse(Console.ReadLine());}
            l = 0; r = x[n] - x[1];
			
            while (l != r) {
				m = (l + r) / 2;
				g = 1;
				j = 1;
				for (i=2; i<=n;i++)
					if (x[i] - x[j] >= m ) {j = i; g+=1;}
					if ( g >= k ) l = m + 1;
					else r = m;
			}
			
            Console.Write(l-1);
        }
    }
}

Но при попытке сдать просто не принимает
  • Вопрос задан
  • 585 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Ascar
Неудивительно
x[i] = int.Parse(Console.ReadLine()); // это 2 5 7 11 15 20 пытаетесь парсить

В вашем стиле будет:
string[] tokens2 = Console.ReadLine().Split();
 for(i=1; i<=n;i++)
x[i] = int.Parse(tokens2[i]);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы