結果
問題 | No.2745 String Swap Battle |
ユーザー |
|
提出日時 | 2024-04-17 12:23:07 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 152 ms / 2,000 ms |
コード長 | 1,154 bytes |
コンパイル時間 | 692 ms |
コンパイル使用メモリ | 75,628 KB |
最終ジャッジ日時 | 2025-02-21 02:49:23 |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 18 |
ソースコード
#include<iostream> #include<string> #include<vector> using namespace std; int main(){ int n; cin >> n; vector<string> s(n); string mn = "~"; int num = 0; for(int i = 0; i < n; i++) { cin >> s[i]; int m = s[i].size(); vector<int> pos(26, -1); pair<int, int> sw = {m-2, m-1}; bool sm = true; for(int j = m - 1; j >= 0; j--) { if(pos[s[i][j] - 'a'] == -1) { pos[s[i][j] - 'a'] = j; }else if(sm) { sw = {j, pos[s[i][j] - 'a']}; } for(int k = 0; k < s[i][j] - 'a'; k++) { if(pos[k] != -1){ sm = false; sw = {j, pos[k]}; break; } } } swap(s[i][sw.first], s[i][sw.second]); if(mn > s[i]) { mn = s[i]; num = 1; }else if(mn == s[i]) { num++; } } for(int i = 0; i < n; i++) { if(s[i] == mn){ cout << n + 1 - num << endl; }else{ cout << 0 << endl; } } }