結果
問題 | No.2715 Unique Chimatagram |
ユーザー |
![]() |
提出日時 | 2024-04-05 21:39:47 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 6 ms / 2,000 ms |
コード長 | 1,416 bytes |
コンパイル時間 | 1,939 ms |
コンパイル使用メモリ | 199,108 KB |
最終ジャッジ日時 | 2025-02-20 21:02:30 |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 40 |
ソースコード
#include<bits/stdc++.h> using namespace std; #define pb emplace_back #define mp make_pair using ll = long long; using pii = pair<int,int>; constexpr int mod = 998244353; constexpr int inf = 0x3f3f3f3f; constexpr int N = 2e5 + 10; string ok(int n, vector<vector<int>> &cnt, vector<int> &num){ for(int i=0; i<n; ++i){ int pos = (1 << 26) - 1; for(int j=0; j<n; ++j){ if(i == j) continue; if(num[i] != num[j]){ continue; } int diff = 0; for(int k=0; k<26; ++k){ if(cnt[i][k] == cnt[j][k]) continue; ++diff; } if(!diff){ pos = 0; break; } if(diff > 2) continue; for(int k=0; k<26; ++k){ if(cnt[i][k] + 1 == cnt[j][k]){ if(pos >> k & 1){ pos ^= (1 << k); break; } } } } if(!pos) continue; string ret = ""; ++cnt[i][__builtin_ctz(pos)]; for(int j=0; j<26; ++j){ while(cnt[i][j]--) ret += (char)(j + 'a'); } return ret; } return "-1"; } void _main(){ int n; string s; cin >> n; vector<vector<int>> cnt(n, vector<int>(26, 0)); vector<int> num(n, 0); for(int i=0; i<n; ++i){ cin >> s; num[i] = s.length(); for(char c : s) ++cnt[i][c - 'a']; } cout << ok(n, cnt, num) << '\n'; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); _main(); return 0; }