神の玉ねぎアムウェイアムウェイこの問題によって。
調理する学校の数と等しいがあるので、もし私たちは、それは確かに一つのプロセス(その場所で他の人と合併する準備ができて)学生番号+1の残りの位置に何度も何度も、同じ番号を保持するために学習され、貪欲たいと思います。
[i]は1E18には大きいかもしれないが、力はあなたのコードは十分に強い場合、あなたはまだシミュレートされた5分のO(N)を書くことができますが(鶏肉料理と、このコードは、野菜の10分を上書きする機能です)
#include <ビット/ STDC ++ H> の#defineは長い長いllの 名前空間stdを使用します。 CONST int型N = 100005、HA = 1E9 + 7。 NUM、N INT、ANS = 1。 LL [N]、今。 INTメイン(){ scanf関数( "%d個"、&n)は、[N] = 1E18 + 1LL。 以下のために(INT i = 0; iがn <; iは++)のscanf( "%のLLD"、A + I)。 ソート(+ n)は、今= [0]、NUM = 1。 以下のために(INT i = 1; iが= N <; iは++){ IF([I] = [I-1]!)のために(;今<[I]&今#++、num--)ANS = ANS *(LL)NUM%ヘクタール。 今[i]は、numは++ =。 } COUT << ANS << ENDL。 0を返します。 }