ABC085参加記

ABC085

A.

出力のところに最初の4文字を2018に変えるとあったので、

cout << "2018" + s.substr(4) << endl;

B.

ソートして直前の要素と重複しているかをカウント

    sort(all(d));
    REP(i,1,n) {
        if (d[i-1] != d[i]) ++cnt;
    }

ソート後にuniqueで前にユニークな値を出せるらしい

auto result = std::unique(v.begin(), v.end());

C.

10000円札をa枚、5000円札をb枚、1000円札をc枚とすると、 b = (y - 1000n - 9000a) / 4000 なので、aをループさせてbが整数になればok

D.

一時間ほど考えた結果、使い終わった後に投げれば良いので、 一番大きなaとそれより大きいbしかいらないので、

    int sum = 0;
    int cnt= 0;
    REP(i,0,n) {
        if (b[i] >= a[0]) {
            sum += b[i];
            ++cnt;
            if (sum >= h) break;
        } else break;
    }
    cnt += max(0, (h - sum + a[0] - 1) / a[0]);
    cout << cnt << endl;