16.07.2018, 22:46 [+3 UTC]
в нашей команде: 2 882 чел. | участники онлайн: 1 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.47 (16.04.2018)

Общие новости:
13.04.2018, 10:33

Форум:
16.07.2018, 10:05

Последний вопрос:
16.07.2018, 07:17

Последний ответ:
13.07.2018, 17:32

Последняя рассылка:
15.07.2018, 19:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
23.08.2011, 02:32 »
Мироненко Николай
Спасибо Вам большое smile [вопрос № 183901, ответ № 268086]
27.03.2012, 10:03 »
Stanislav B.
Все очень подробно расписано, большое спасибо. [вопрос № 185678, ответ № 270332]

РАЗДЕЛ • С / С++

Создание программ на языках C и C++.

[администратор рассылки: Андрей Кузнецов aka Dr_Andrew (Старший модератор)]

Лучшие эксперты в этом разделе

CradleA
Статус: Профессор
Рейтинг: 102
solowey
Статус: Студент
Рейтинг: 87
mklokov
Статус: 6-й класс
Рейтинг: 23

Перейти к консультации №:
 

Консультация онлайн # 193187
Раздел: • С / С++
Автор вопроса: IIISergeyIII (Посетитель)
Отправлена: 06.05.2018, 08:13
Поступило ответов: 0

Добрый день. smile
Уважаемые эксперты, у меня возникли сложности со следующей задачей.
Прошу вашей помощи.

Задача не проходит один из тестов проверяющей системы. Помогите, пожалуйста, найти возможную ошибку.

Условие задачи:

Необходимо выложить бордюр длины N, использую до 2 кирпичей каждого вида M.

Формат ввода
Сначала вводится число N (1 ≤ N ≤ 10^9), затем — число M (1 ≤ M ≤ 15) и далее M попарно различных чисел A1, A2, …, AM (1 ≤ Ai ≤ 10^9).

Формат вывода
Выведите сначала K — количество кипричей, которое нужно использовать для выкладывания бордюра, если можно выложить бордюр длиной ровно N. Далее выведите K чисел, задающих длины использованных кирпичей. Если решений несколько, выведите вариант, в котором использует наименьшее количество кирпичей. Если таких вариантов несколько, выведите любой из них.
Если для выкладывания бордюра придется обязательно разломить какой-то кирпич, то выведите одно число 0. Если же не хватит кипричей, чтобы выложить бордюр, выведите одно число –1 (минус один).

    #include <iostream>
    #include <cmath>
    #include <algorithm>
    #include <math.h>
    #include <vector>
    #include <fstream>
 
    using namespace std;
    
    bool comp(int a, int b) {
        return -(a-b);
    }
    
    void write(vector<long long> a) {
        for (int i = 0; i < a.size(); i++) {
            cout << a[i] << " ";
        }
    }
    
    int main()
    {
        long long n, m;
        long long L = 0;
        long long sum = 0;
        long long k = 0;
        vector<long long> used;
        vector<long long> br;
    
        cin >> n >> m;
        for (long long i = 0; i < m; i++) {
            long long t;
            cin >> t;
            br.push_back(t);
            br.push_back(t);
            sum += t*2;
        }
    
        sort(br.begin(), br.end(), greater<int>());
    
        if (n < sum) {
            for (int j = 0; j < br.size(); j++) {
                for (int i = j; i < br.size(); i++) {
    
                    if ( br[i] <= (n-L) ) {
                        used.push_back(br[i]);
                        L += br[i];
                        k++;
                    }
                    if (L == n) break;
                }
                if (L == n) {
                    break;
                } else {
                    k = 0;
                    L = 0;
                    used.clear();
                }
            }
    
    
            if (L == n) {
                cout << k << endl;
                write(used);
            } else {
                cout << 0;
            }
        } else if (n == sum) {
            cout << m*2 << endl;
            write(br);
        } else {
            cout << -1;
        }
    
    
    
        return 0;
    }

Состояние: Консультация закрыта

Oтветов пока не поступило.

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.18082 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.47 от 16.04.2018