horoyoisawaのゴミ箱

いろいろ書きます

AtCoder Regular Contest 009 B - otogi no kuni no takahashi kun 誤答コード(Resolved)

定番やらかしコードーーーー。

今回も間違い探しをしていく。(まだ発見していない)

以下問題と提出コード。見たい人は見て。

問題

atcoder.jp

提出コード

#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。