Hatena::Grouptopcoder

TopCoderの問題を解く

解いた問題の一覧表

2009-10-06

Rounder

| 19:38

問題文, SRM 195

整数 n と b が与えられたとき、n を b の倍数の中で最も近い数に丸めよ。

244.95/250

class Rounder {
public:
    int round(int n, int b) {
        int r = n / b;
        int l = r * b;
        int h = (r+1) * b;
        if (h-n <= n-l) return h;
        else return l;
    }
};

2009-09-22

FanFailure

| 20:26

問題文, SRM 195

Algorithm Tutorials -- Planning an Approach to a TopCoder Problem: Section 2から。

プロセッサを充分に冷やすために、壊れても大丈夫かもしれない最大のファンの数と、壊れても絶対に大丈夫なファンの数を求める。問題文がわかりにくいが、解法は単純。

170.53/250

class FanFailure {
public:
    vector <int> getRange(vector <int> capacities, int minCooling) {
        vector <int> result(2, 0);
        sort(capacities.begin(), capacities.end());
        int sum = accumulate(capacities.begin(), capacities.end(), 0);
        for (int i = 0; i < capacities.size(); i++) {
            sum -= capacities[i];
            if (sum < minCooling) break;
            result[0]++;
        }
        sum = accumulate(capacities.begin(), capacities.end(), 0);
        for (int i = capacities.size()-1; i >= 0; i--) {
            sum -= capacities[i];
            if (sum < minCooling) break;
            result[1]++;
        }
        return result;
    }
};