WARush

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

Codeforces #186 Div2 A "Ilya and Bank Account"

問題

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

イリヤはとても賢いライオンで、彼は奇妙な町"ZooVille"に住んでいる。この町に住むすべての動物には義務と権利がある。さらに、彼らは銀行のアカウントさえ持っている。銀行のアカウントの形式は整数となっている。整数は負の数値をとる事もできる。この数値の意味はアカウントの持ち主の貯金である。(つまりは負の数は借金だ・・・)

ライオンのイリヤは誕生日をむかえており、沢山のプレゼントをもらった。その中のひとつは(このプレゼントはメインZooVille銀行からのものである)彼の銀行のアカウントの数字の最後か、その1つ前の数字を1回まで削除する権利であった。例えば、イリヤのアカウントが-123の時、イリヤは最後の数字を消し、-12とすることができるし、その1つ前の数字を消して、-13とすることができる。もちろん、イリヤは削除をしないこともできる。

イリヤは算数は苦手なので、アカウントが最大になるように彼を助けて欲しい。彼が銀行からのプレゼントを使用した後の、アカウントの最大値を出力せよ。

制約

10 <= アカウントの絶対値 <= 10^9


考えた事

正だったら消さなくていいしょ

負だったら2つの候補のうち大きいほうを消せばいいしょ

マイナスから0になったら - を取ろう

事後

stringで途中に'\0'挿入してもそこまでの文字列ということにはならんらしい。


ソースコード

int main() {

    char id[20];
    cin >> id;
    int n = strlen( id );

    if( id[0] == '-' && n >= 3 ){
        int last = id[n-1] - '0';
        int before = id[n-2] - '0';
        if( before < last ){
            id[n-1] = '\0';
        }else{
            id[n-2] = id[n-1];
            id[n-1] = '\0';
        }
        if( n == 3 && id[1] == '0' ){
            id[0] = '0';
            id[1] = '\0';
        }
    }

    cout << id << endl;
}