ここで、高調波シリーズln2e5で順次マスタとして各2e5-1カード番号から列挙し、次にセグメント番号は、その複雑さの数よりも大きいシーク、すなわち複雑エッペンドルフふるい,,
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 #defineは長い長いっ の#define N 200005 int型のCNT [N]、N。 #define LSONのL、M、RT << 1つ の#define rsonのM + 1、R、RT << 1 | 1つ のLL NUM [N << 2 ]。 ボイド更新(int型 POS、int型 V、INTを L、INT R、INT {RT)の 場合(L == R){ NUM [RT] + = V。 返します。 } INT M = 1 + rを>> 1 。 もし(POS <= m)の更新(POS、V、LSON)。 他の更新(POS、V、rson)。 NUM [RT] = NUM [RT << 1 ] + NUM [RT << 1 | 1 ]。 } LLクエリ(int型 L、INT R、int型の L、INT R、INT RT){ 場合(L <= 1 && R> = R){ 戻り[RT] NUM。 } INT M = 1 + rを>> 1 。 LLのRES = 0 。 もし(L <= M)RES + = クエリ(L、R、LSON)。 もし(R> M)RES + = クエリ(L、R、rson)。 リターンのres; } int型のmain(){ CIN >> N。 用(int型 i = 1 ; iが<= N iが++ ){ int型のX; scanf関数(" %のD "、&x)は、 CNT [X] ++ ; } LL ANS = 0 。 用(LL I = 200000 ; I> = 1 ; i--)場合(CNT [I]){ LLのTMP = 0 。 アップデート(I、CNT [i]は、1、200000、1); 用(LLのJ = 1 ; iが<jは* = 200000 ; J ++ ) TMP + =クエリ(jは* I、分(200000ll、(J + 1)* I- 1)、1、200000、1)* iが* jは、 ANS = MAX(ANS、TMP)。 } COUT << ANS << ENDL。 }