- topcoder初参戦。
- 以下の繰り返し。
- 一番大きい数字を選んでポイントに加算。
- 選んだ数字を非負の範囲で1減らす。
#include <sstream>
#include <string>
#include <vector>
#include <map>
#include <algorithm>
#include <iostream>
#include <utility>
#include <set>
#include <cctype>
#include <queue>
#include <stack>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <iterator>
using namespace std;
class AdditionGame{
public:
int mymax(int a, int b, int c){
return max(a, max(b, c));
}
int getMaximumPoints(int A, int B, int C, int N){
int ret = 0;
int inc;
for(int i = 0; i < N; i++){
inc = mymax(A, B, C);
ret += inc;
if(A == inc && A >= 1) {A--; continue;}
if(B == inc && B >= 1) {B--; continue;}
if(C == inc && C >= 1) {C--; continue;}
}
return ret;
}
};