JOI春合宿 2010-DAY1-1 (JOI Poster)

ジャッジ動いてないからあれだけどたぶん大丈夫
再帰するだけ

#include <cstdio>
#include <string>
#include <iostream>
using namespace std;

int n, k, fact[21];
string s;

string solve(int size, int pos){
    string tmp = "";
    if(size == 1){
	tmp += 'J';
	return tmp;
    }
    if(pos <= size / 2){
	for(int i = 0; i < size / 2; i++) tmp += 'J';
	for(int i = 0; i < size / 2; i++) tmp += 'O';
	return tmp;
    }else{
	for(int i = 0; i < size / 2; i++) tmp += 'I';
	return tmp + solve(size / 2, pos - size / 2);
    }
}

int main(){
    fact[0] = 1;
    for(int i = 1; i < 21; i++) fact[i] = 2 * fact[i - 1];
    scanf("%d %d", &n, &k);
    s = solve(fact[n], k);
    cout << s << endl;
    return 0;
}