Yukicoder No.501 穴と文字列
出力部分は無視するとして、$O(1)$でできるよなあと思いつつ$O(N)$した。 $O(N \log N)$も考えたが、$O(N)$にする方が早かったので$O(N)$。
#include <iostream>
using namespace std;
int main() {
int n, d; cin >> n >> d;
string s;
while (n) {
if (d and d < 2*n) {
s += 'A';
d -= 1;
} else if (d) {
s += 'B';
d -= 2;
} else {
s += 'C';
}
n -= 1;
}
cout << s << endl;
return 0;
}