結果
問題 | No.2629 A replace B replace C |
ユーザー | PersistentLife |
提出日時 | 2024-02-16 21:29:46 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 1,271 bytes |
コンパイル時間 | 1,452 ms |
コンパイル使用メモリ | 168,128 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-09-28 19:44:21 |
合計ジャッジ時間 | 2,857 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 61 |
ソースコード
/* Things to notice: 1. do not calculate useless values 2. do not use similar names Things to check: 1. submit the correct file 2. time (it is log^2 or log) 3. memory 4. prove your naive thoughts 5. long long 6. corner case like n=0,1,inf or n=m 7. check if there is a mistake in the ds or other tools you use 8. fileio in some oi-contest 9. module on time 10. the number of a same divisor in a math problem 11. multi-information and queries for dp and ds problems */ #include<bits/stdc++.h> using namespace std; #define int long long #define fi first #define se second #define pii pair<long long,long long> #define mp make_pair #define pb push_back const int mod=998244353; const int inf=0x3f3f3f3f; const int INF=1e18; void solve() { int n; string s,t; int ab=0,ac=0,bc=0; cin>>n; cin>>s>>t; for(int i=0;i<n;i++) if(s[i]!=t[i]) { if(s[i]>t[i]) { cout<<"No\n"; return; } if(s[i]=='A'&&t[i]=='B') ab++; else if(s[i]=='A'&&t[i]=='C') ac++; else bc++; } // cout<<ab<<" "<<ac<<" "<<bc<<"\n"; while(ab||ac||bc) { if(!bc||!(ab+ac)) { cout<<"No\n"; return; } bc--; if(ac) ac--,bc++; else ab--; } cout<<"Yes\n"; } signed main() { ios::sync_with_stdio(0); cin.tie(0); int _=1; // cin>>_; while(_--) solve(); return 0; }