Предмет: Информатика,
автор: chebudelphin
СРОЧНО ПОМОГИТЕ!!! СИРИУС!!! C++!!!
Большое число
Вася написал на длинной полоске бумаги большое число и решил похвастаться своему старшему брату Пете этим достижением. Но только он вышел из комнаты, чтобы позвать брата, как его сестра Катя вбежала в комнату и разрезала полоску бумаги на несколько частей. В результате на каждой части оказалось одна или несколько идущих подряд цифр. Теперь Вася не может вспомнить, какое именно число он написал. Только помнит, что оно было очень большое и, разумеется, не начиналось с нуля. Чтобы утешить младшего брата, Петя решил выяснить, какое максимальное число могло быть написано на полоске бумаги перед разрезанием. Помогите ему!
Входные данные
В первой строке входных данных содержится натуральное число NN, не превосходящее 100100 — количество строк. Далее заданы NN строк, каждая из которых содержит последовательность цифр. Каждая строка содержит от 11 до 100100 цифр. Гарантируется, что хотя бы в одной строке первая цифра отлична от нуля.
Выходные данные
Выведите одну строку — максимальное число, которое могло быть написано на полоске перед разрезанием.
Примеры
Ввод 1
4 2 20 004 66
Вывод
66220004
Ответы
Автор ответа:
2
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
void readList(int n, vector <string> &a) {
for (int i=0; i<n; i++) cin >> a[i];
}
void writeList(vector <string> &a) {
for (int i=0; i<(int)a.size(); i++) cout << a[i];
}
bool cmp(string x, string y) {
return x + y > y + x;
}
int main() {
int n; cin >> n;
vector <string> a(n);
readList(n, a);
sort(a.begin(), a.end(), cmp);
writeList(a);
return 0;
}
Похожие вопросы
Предмет: Окружающий мир,
автор: кирилл472
Предмет: Русский язык,
автор: MaksBeats
Предмет: Українська мова,
автор: Аноним
Предмет: История,
автор: MaFro
Предмет: Математика,
автор: Зщцтвимооврлыжфж