AtCoder Regular Contest 009 B - otogi no kuni no takahashi kun 誤答コード(Resolved)
定番やらかしコードーーーー。
今回も間違い探しをしていく。(まだ発見していない)
以下問題と提出コード。見たい人は見て。
問題
提出コード
#include <bits/stdc++.h>
using namespace std;
using P = pair<int, int>;
#define chmin(i, j) i = min(i, j);
#define chmax(i, j) i = max(i, j);
vector<int> b(10);
bool custom(int p, int q) {
string s = to_string(p);
string t = to_string(q);
if(s.size() < t.size()) return true;
else if(s.size() > t.size()) return false;
else {
bool res = true;
for(int i=0;i<s.size();i++) {
int j = s[i] - '0';
int k = t[i] - '0';
if(i == j) continue;
else if(b[j] < b[k]) {
res = true;
break;
}
if(b[j] > b[k]) {
res = false;
break;
}
}
return res;
}
}
int main() {
for(int i=0;i<10;i++) {
int num;
cin >> num;
b[num] = i;
}
int n;
cin >> n;
vector<int> a(n);
for(int i=0;i<n;i++) cin >> a[i];
sort(a.begin(), a.end(), custom);
for(int i=0;i<n;i++) cout << a[i] << endl;
return 0;
}
追記用
もしわかったら追記する。
(2020/04/10)
if(i == j) continue→if(j == k) continueに修正。結果AC。