Стандартная библиотека C++ (2015)

  1. Santa Monica есть даже в примере. Так что да, конечно.
  2. Имеется ввиду лексикографический порядок

@RS Спасибо, тогда ещё вопрос, пофиксили ли в тестах то, что встречались товары с одинаковым именем?) И в примере Санта-Моника через тире написана, поэтому я спросил.

Не пофиксили.

Все большие тесты содержат повторяющиеся товары.

Вряд ли тесты будут переделываться :slight_smile: Надо в условии изменить эту строчку.

Адаптировать решение под повторяющиеся товары можно заменой = на += в нужном месте :wink:

@Nekrolm Нет, в моей реализации мне ещё кучу в считывании придётся переделывать, поэтому я и решил уточнить, ну а с += это уже в самом процессе после того как мы считали и отсортировали

Роман Борисович, во сколько можно будет подойти завтра во вторник 20 октября, чтобы показать задание?

Роман Борисович, чекер работает неправильно: выдаёт неинформативные сообщения, например, о невозможности парсировать XML(RUN 333) или chek failed(RUN 427). Я компилировал этот код уже в 4 разных компиляторах (майкрософт, gcc, clang и mingw), используя различные флаги компиляции (c++11,14, o0,o3). Он во всех случаях работал одинаково, выдавая верный результат.

Павел, это происходит при любой отправке? Приходите ко мне, посмотрим на сервере.

Сегодня обсуждали вопрос об использовании sort и предиката >=. Долго удивлялись и все такое. Демонстрирую, где “собака зарыта”: тут про sort, а тут про концепцию Compare, используемую сортировкой. Т.к. предикат >= не вписывается в эту концепцию, то его использовать нельзя. Скорее всего - это undefined behavior.

1 лайк

А в каком именно месте не вписывается? Просто звучит немного фантастически.

UPD я вот на такой программе попробовал clang 3.6 — вроде всё нормально.

#include <algorithm>
#include <iostream>
#include <vector>

struct P {int a; double d;};

using namespace std;

int main()
{
    vector<P> v {{1, 2.5}, {2, 2.7}, {2, 3.1}, {1, 2.7}};

    sort(begin(v), end(v), [](P const & p1, P const & p2){
        return p1.d >= p2.d;
    });
    
    for (auto p : v) {
        cout << "p.a: " << p.a << " p.b " << p.d << endl;
    }    
}

Цитирую Compare:

 For all a, comp(a,a)==false 

Для >= это не так. Было предположение, что результат такой сортировки undefined behavior. Но вообще надо стандарт смотреть.

У нас тоже не 100% тестов упало. Но кое-что упало.

так как в компараторе писать? просто < ?

Да, действительно, спасибо. Слово strict в “strict weak ordering” как раз означает иррефлексивность. В стандарте сказано (25.3/3) так:

For the algorithms to work correctly, comp has to induce a strict weak ordering on the values.

Про UB не сказано, хотя обычно пишется явно, если UB. Тем не менее, на cplusplus.com утверждают, что UB.

Ну, так это же вольная трактовка. Я же выше написал, что за UB надо в стандарт лезть.

Вопрос: а по-русски это свойство не антирефлексивность называется? Антисеммитричность, антирефлексивность …

А для предиката < проверить свойства концепции Compare самостоятельно слабо? :slight_smile: Это же задача для 1 курса по теории множеств.

Внимание!

С задачей №1 по STL поступим следующим образом. Доп баллы за нее получат те, кто

  1. Отправил решения до 24.10 включительно и получившие “ОК”. Я составлю список студентов и вывешу его сюда.
  2. Обсудил и исправил качественную сторону решения со мной до 31.10 включительно.

Добавлены два теста, которые проверяют работу со строками и списками объектов. Rejudge запущен.

По просьбам трудящихся: 36 тест.

http://pastebin.com/ZWG6YFxZ

Дима, 41 тест так же по просьбам трудящихся выложи, пожалуйста

@RS Роман Борисович, возник такой вопрос, судя по тестам, дата может быть в формате д.мм.гггг чч:мм, например 1.12.2013 22:22, вместо 01.12.2013 22:22, а это противоречит условию задачи

Дата и время документа Формат дд.мм.гггг чч:мм

Хотелось бы узнать, это так задумано(не баг, а фича) или тот, кто писал тесты, допустл ошибку? У меня из-за этого программа некорректно работает

Роман Борисович, чекер почему-то считает эти файлы бинарыми и размер неправильно определяет, хотя у меня они нормально создаются и открываются. (RUN 648). http://plasmon.rghost.ru/6D6GfsSCT/image.png