WARush

SRMの結果とか、解けた問題のコードを書いていきます

Codeforces #188 Div2 A "Even Odds"

問題

http://codeforces.com/contest/318/problem/A

奇妙な人、ボロディアは特に自然数自然数とは正の整数である)の一般的な順序が気に入らず、機嫌が悪かった。彼は自然数の順序の再配置を決める。しかし、自然数は無限大なので彼は1~nで決める事にした。彼は次のように数列を書き出していった。最初1~nの全ての奇数を昇順に書き出す。それから1~nの全ての偶数を昇順に書き出す。書き出した数列のk番目の数を出力せよ。

制約

1 <= k <= n <= 10^12



考えた事

1 + ( k - 1 ) * 2 <= nならば奇数なのでそのまま出力
そうでなければその数から、奇数ならn、偶数ならn-1を引いて出力


ソースコード

int main() {

    long long n, k;
    cin >> n >> k;

    long long t = 1 + (k - 1) * 2;
    if( t > n ){
        if( n % 2 == 1 ){
            t -= n;
        }else{
            t -= n - 1;
        }
    }
    cout << t << endl;
}