Возможная причина "Ошибка выполнения" в следующем коде? - PullRequest
0 голосов
/ 03 мая 2020

В настоящее время я практикую кикстарт-кодирование в Google. вот ссылка, чтобы увидеть вопрос: https://codingcompetitions.withgoogle.com/kickstart/round/0000000000050e01/00000000000698d6 Я создал программу, которая дала правильный ответ, используя пример вопроса, который был задан в вопросе, но когда я фактически представляю его для проверки, код соответствует ошибка выполнения. Поскольку это не дает, почему так, я понятия не имею, как поступить. Я надеюсь, что вы, ребята, можете помочь ...

Вот код:

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
    int ts;
    cin >> ts;
    for (int i = 1; i <= ts; ++i)
    {
        int n, p;
        cin >> n >> p;

        // input skill level and sort descending
        int skill[100] = {0};
        for (int i = 0; i < n; i++) cin >> skill[i];
        int size = sizeof(skill) / sizeof(skill[0]);
        sort(skill, skill + size, greater<int>());

        int ans= 9999999;
        for (int i = 0; i <=(n-p); i++)
        {
            int tmp = 0;
            for (int j = i + 1; j <= i + (p - 1); j++)
                tmp += skill[i] - skill[j];
            ans = min(ans, tmp);
        }
        cout << "Case #" << i << ": " << ans << endl;
    }
}

Ответы [ 2 ]

2 голосов
/ 03 мая 2020

Таким образом, вопрос говорит, что N может быть до 10000, но ваш код предполагает, что он не больше 100.

0 голосов
/ 04 мая 2020

Что касается LTE, вы почти там. Попробуйте заменить

        for (int j = i + 1; j <= i + (p - 1); j++)
            tmp += skill[i] - skill[j];

l oop выражением с постоянным временем. Подсказка: когда самый искусный игрок покидает окно, на сколько уменьшается время тренировки остальных игроков?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...