キーエンス2020
[A][C]の2完だった. 最近だとAGC41と第6回ドワンゴも出たけど,修論で忙しくてブログを書いていなかった.そのうち覚えてる範囲で書きたい(まあ全然解けなかったんだけど)
[B]
初めpair
としてソートすれば良いことに気づかなくてアレだった.
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main(void){ int N; cin >> N; vector<pair<long long, long long>> vs(N); for(int i = 0; i < N; i++){ cin >> vs.at(i).first >> vs.at(i).second; } sort(vs.begin(), vs.end()); int ans = 1; long long edge = vs.at(0).first + vs.at(0).second; // -1してた for(int i = 1; i < N; i++){ long long right_edge = vs.at(i).first + vs.at(i).second; // -1してた long long left_edge = vs.at(i).first - vs.at(i).second; // +1してた if(edge > right_edge){ edge = right_edge; continue; }else if(edge <= left_edge){ ans++; edge = right_edge; } } cout << ans << endl; }
終わった後にこれでACになったけど,問題文が曖昧だと思った.時間中はコメントしたように提出して一生WA
になってた.問題文は
ただし、各 i (1≤i≤N) に対して、 ロボット i の腕が動く範囲とは 数直線上の座標が X_i−L_i より大きく X_i+L_i 未満の部分を指します。
と言ってるんだから,素直に読んだら腕の長さはL_i-1になると思うんだけど…