NUMTRANS - Trò chơi ghép số

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Tèo và Tí chơi thân với nhau, biết Tí học rất giỏi môn Toán nên một hôm Tèo đố Tí bài toán:

Cho ~n~ số nguyên dương ~a_1, a_2, …, a_n~. Hãy ghép các số đó lại với nhau để được số nguyên dương lớn nhất.

Ví dụ: Với ~3~ số ~12~, ~907~, ~91~ ta có ~6~ cách ghép được ~6~ số là: ~1290791, 1291907, 9071291, 9079112, 9112907, 9190712~. Trong đó số lớn nhất là ~9190712~.

Tất nhiên là bài toán này không thể làm khó Tí được nhưng vì còn bận học bài nên Tí muốn nhờ các bạn viết chương trình giải quyết bài toán trên.

Input

  • Dòng đầu chứa số nguyên dương ~n~;
  • Dòng thứ hai chứa ~n~ số nguyên dương ~a_1, a_2, …, a_n~. Hai số liên tiếp cách nhau một dấu cách.

Giới hạn:

  • ~1 ≤ n ≤ 100; 1 ≤ a_i ≤ 10^5~.
  • Có ~50\%~ số test có ~n ≤ 10~.

Output

  • Ghi ra số nguyên dương lớn nhất ghép được.

Sample

Input #1
3
12 907 91
Output #1
9190712

Problem source: Chuyên Sơn La Online Judge


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    KhoiMinh  đã bình luận lúc 18, Tháng 3, 2024, 3:33

    bí idea hẳn dùng

    include <iostream>

    include <algorithm>

    include <vector>

    using namespace std;

    int cmp(string a, string b)

    {return a+b>b+a;}
    

    int main()

    {
    
        int n; cin>>n;
        vector <string> v(n);
    
        for (auto &i:v) cin>>i;
    
        sort(v.begin(),v.end(),cmp);
    
        for (auto i:v) cout<&lt;i;
    
        return 0;
    
    }
    

  • 5
    tognoek  đã bình luận lúc 27, Tháng 8, 2023, 2:29

    sort string