結果

問題 No.3363 Two Closest Numbers
コンテスト
ユーザー AK_Mi
提出日時 2025-11-18 13:56:29
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 1,761 bytes
コンパイル時間 5,624 ms
コンパイル使用メモリ 335,112 KB
実行使用メモリ 7,716 KB
最終ジャッジ日時 2025-11-18 13:56:39
合計ジャッジ時間 8,619 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 53 WA * 6
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using namespace atcoder;
using ll = long long;
using ld = long double;
int main(){
    ll n;
    cin >> n;

    vector<ll> num(10,0);
    ll c;

    for(ll i = 0; i < n; i++){
        cin >> c;
        num[c]++;
    }

    if(n % 2 == 1){
        deque<ll> big;
        deque<ll> small;
        ll s = (n-1)/2;

        for(ll i = 0; i < 10; i++){
            for(ll t = 0; t < num[i]; t++){
                big.push_back(i);
            }
        }

        for(ll i = 0; i < s; i++){
            small.push_back(big.back());
            big.pop_back();
        }

        ll ans = 0;
        ll kake = 1;
        for(ll i = 0; i < s; i++){
            ans += 9982443530;
            ans += (big.back() - small.back()) * kake;
            ans %= 998244353;
            kake *= 10;
            kake %= 998244353;
            big.pop_back();
            small.pop_back();
        }
        ans += big.back() * kake;
        ans %= 998244353;

        cout << ans << '\n';
        
    }else{
        vector<ll> nokori;
        for(ll i = 0; i < 10; i++){
            num[i] %= 2;
            if(num[i] == 1)nokori.push_back(i);
        }
        ll s = nokori.size()/2;

        ll minn = -1;
        
        do{
            ll a = 0;
            ll b = 0;
            for(ll i = 0; i < s; i++){
                a *= 10;
                a += nokori[i];
            }
            for(ll i = 0; i < s; i++){
                b *= 10;
                b += nokori[i+s];
            }
            if(abs(a-b) < minn || minn == -1){
                minn = abs(a-b);
            }

        }while(next_permutation(nokori.begin(),nokori.end()));

        cout << minn << '\n';
    }



    return 0;
}
0