21

Re: qsort

Runtime Error

Подякували: YurkoFlisk1

22

Re: qsort

Якщо використовувався ваш cmp, то там замалі буфери. Кожна частинка може мати до 100 символів, відповідно після копіювання може відбутись вихід за межі масиву. В них має бути розмір 201

Подякували: mshcherba1

23

Re: qsort

Точно, я умову неправильно запам'ятав :(

24

Re: qsort

З буферами по 201 стало 40 з 40 балів.

25 Востаннє редагувалося YurkoFlisk (04.08.2015 15:14:51)

Re: qsort

Не хочу створювати нову тему, тому напишу тут. Я колись схожу задачу(www.e-olymp.com/uk/problems/4417) зробив на e-olymp, даний розв'язок пройшов всі тести:

Прихований текст
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main(void)
{
    string str;
    vector<string> v;
    ifstream in("input.txt");
    while(in >> str)
        v.push_back(str);
    sort(v.begin(), v.end(), [](const string& l, const string& r){
        return l+r > r+l;
    });
    in.close();
    ofstream out("output.txt");
    for(auto str : v)
        out << str;
    out << endl;
    out.close();
    return 0;
}

Зараз, трошки змінивши код під тех. умови цієї задачі і під застарілий компілятор(там використовується GNU Compiler Collection 4.0.2), здав Strip на NetOI з таким кодом:

Прихований текст
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
inline bool cmp(const string& l, const string& r)
{
    return l+r > r+l;
}
int main(void)
{
    size_t n;
    cin >> n;
    string str;
    vector<string> v(n);
    while(n--)
    {
        cin >> str;
        v.push_back(str);
    }
    sort(v.begin(), v.end(), cmp);
    for(size_t i = 0; i < v.size(); ++i)
        cout << v[i];
    cout << endl;
    return 0;
}

Але розв'язок набирає тільки 16 балів, всі інші тести Wrong Answer, хоч і логіка тут така ж як і у вашому розв'язку.  :(  Якщо не важко, підкажіть будь ласка, в чому проблема

26

Re: qsort

Перше, що бачу - у вас масив удвічі більший за потрібне (n пустих елементів і n вводите).

Подякували: YurkoFlisk1

27

Re: qsort

Дякую! Якось вилетіло з голови, що конструктор vector'а, який приймає аргумент size_t, створює відповідну к-сть об'єктів, а не резервує місце для них. Замінив рядки 16-20 на це:

Прихований текст
for(size_t i = 0; i < n; ++i)
    cin >> v[i];

і тепер все працює :)

Подякували: koala1

28

Re: qsort

Runtime Error

29

Re: qsort

mshcherba написав:

Runtime Error

Оперативно ви :)