SRM463 Div1 Easy(250), Div2 Medium(500) RabbitNumbering

RabbitNumbering

例えば、ソートしたmaxNumberが{2,3,5,8}ならば、1番目の兎は2通り、2番目の兎は1番目の兎に付けた番号は使えないので3-1=2通り、3番目の兎は1,2番目の兎に付けた番号は使えないので5-2=3通りの選び方がある。

#include <vector>
#include <algorithm>

using namespace std;

class RabbitNumbering
{
public:
    int theCount( vector <int> maxNumber );
};

int RabbitNumbering::theCount( vector <int> maxNumber )
{
    sort( maxNumber.begin(), maxNumber.end() );

    long long r = 1;
    for ( int i=0; i<(int)maxNumber.size(); i++ )
        r = r * max(0,maxNumber[i]-i) % 1000000007;

    return (int)r;

}