結果
| 問題 |
No.3363 Two Closest Numbers
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-11-17 21:19:04 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,564 bytes |
| コンパイル時間 | 3,432 ms |
| コンパイル使用メモリ | 284,576 KB |
| 実行使用メモリ | 7,720 KB |
| 最終ジャッジ日時 | 2025-11-17 21:19:29 |
| 合計ジャッジ時間 | 6,257 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 53 WA * 6 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
const ll INF = LLONG_MAX / 4;
#define rep(i, a, b) for(ll i = a; i <(b); i++)
#define all(a) begin(a),end(a)
#define sz(a) ssize(a)
bool chmin(auto& a,auto b){return a > b ? a = b,1 : 0;}
bool chmax(auto& a,auto b){return a < b ? a = b,1 : 0;}
const ll mod = 998244353;
int main(){
cin.tie(0)->sync_with_stdio(0);
int n;
cin >> n;
vector<int> a(n);
rep(i,0,n) cin >> a[i];
sort(all(a));
if(n % 2 == 0) {
vector<int> cnt(10);
rep(i,0,n){
cnt[a[i]]++;
}
vector<int> nokori;
rep(i,0,10){
if(cnt[i] % 2 == 1){
nokori.push_back(i);
}
}
ll ans = INF;
if(nokori.size() == 0) ans = 0;
do {
int m = nokori.size();
ll l = 0;
ll r = 0;
rep(i,0,m/2){
l = l * 10 + nokori[i];
}
rep(i,m/2,m){
r = r * 10 + nokori[i];
}
ans = min(ans, abs(l - r));
} while(next_permutation(all(nokori)));
cout << ans % mod << endl;
} else {
vector<int> l,r;
l.push_back(a[0]);
rep(i,1,n) {
if(i >= n-i) break;
l.push_back(a[i]);
r.push_back(a[n-i]);
}
ll L = 0, R = 0;
rep(i,0,l.size()) L = (L*10 + l[i]) % mod;
rep(i,0,r.size()) R = (R*10 + r[i]) % mod;
cout << (L - R + mod) % mod << endl;
}
}