結果
問題 | No.2715 Unique Chimatagram |
ユーザー | かえで |
提出日時 | 2024-04-05 22:30:46 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 2,619 bytes |
コンパイル時間 | 3,716 ms |
コンパイル使用メモリ | 222,560 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-01 02:41:53 |
合計ジャッジ時間 | 5,067 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 40 |
ソースコード
//#pragma GCC optimize("Ofast") //#pragma GCC optimize "O3,omit-frame-pointer,inline" #include <iostream> // cout, endl, cin #include <string> // string, to_string, stoi #include <vector> // vector #include <algorithm> // min, max, swap, sort, reverse, lower_bound, upper_bound #include <utility> // pair, make_pair #include <tuple> // tuple, make_tuple #include <cstdint> // int64_t, int*_t #include <cstdio> // printf #include <map> // map #include <queue> // queue, priority_queue #include <set> // set #include <stack> // stack #include <deque> // deque #include <unordered_map> // unordered_map #include <unordered_set> // unordered_set #include <bitset> // bitset #include <cctype> // isupper, islower, isdigit, toupper, tolower #include <iomanip>//fixed,setprecision #include <limits.h>//INT_MAX #include <math.h>//M_PI #include <random> #include <regex> // 正規表現 #include <time.h> #include <fstream> #include <array> #include <bit> #include <chrono> #include <ranges> #include <span> #include <cmath> #include <cstdint> #include <complex>//複素数 //#include <bits/stdc++.h> using namespace std; #include <atcoder/all> using namespace atcoder; //using mint = modint1000000007; //using mint = modint998244353; // using mint=modint; #define ll long long #define rep(i, n) for (ll i = 0; i < (ll)(n); i++) //const int dx[8]={1,0,-1,0,1,1,-1,-1}; //const int dy[8]={0,1,0,-1,1,-1,1,-1}; int dx[4]={1,0,-1,0}; int dy[4]={0,1,0,-1}; int main(){ int n; cin>>n; map<string,int>mp; map<string,vector<int>>mp2; string s; rep(i,n){ cin>>s; sort(s.begin(),s.end()); mp[s]++; vector<int>t(26,0); rep(j,s.size())t[s[j]-'a']++; mp2[s]=t; } int cnt=0; for(auto p:mp){ if(p.second>=2)continue; rep(k,26){ string t=p.first+(char)('a'+k); sort(t.begin(),t.end()); vector<int>num(26,0); rep(nk,t.size())num[t[nk]-'a']++; //if(mp[t]==0){ bool check=true; for(auto q:mp2){ if(p.first==q.first)continue; int sa=0; auto u=q.second; for(int nk=0;nk<26;nk++){ sa+=abs(num[nk]-u[nk]); //cerr<<(char)('a'+nk)<<" "<<tt[nk]<<" "<<u[nk]<<endl; } if(sa==1)check=false; } if(check){ cout<<t<<endl; return 0; } //} } } cout<<-1<<endl; return 0; }