コード:
#include <ビット/ STDC ++ H> に#define setIO(S)freopenは(S ".IN"、 "R"、STDIN) の#define MAXN 2000000 の#define LL長い長い 名前空間stdを使用。 PRIORITY_QUEUE <LL、ベクトル<LL>、大きい<LL>> Q; 構造体ノード { LLヴァル、ティム。 }キー[MAXN]。 ブールCMP(ノード、ノードB) { a.tim戻り<b.tim。 } int型のmain() { // setIO( "入力")。 LL ANS = 0。 int型のn; scanf関数( "%のD"、&N); 以下のために(; iは= N <; I = int型1 ++ I) { scanf関数( "%のLLDの%のLLD"、&キー[I] .tim、&キー[I] .val)。 } ソート(1 + N +キー、+ 1キー、CMP); (; iが<= N; I ++ iは1 = INT)のために { IF(キー[I] .tim <=(LL)Q.size()) { IF(キー[I] .val> Q.top()) { ANS - = Q.top()。 ANS + =キー[I] .val。 Q.pop(); Q.push(キー[I] .val)。 } } 他 { ANS + =キー[I] .val。 Q.push(キー[I] .val)。 } } のprintf( "%LLDを\ n"、ANS)。 0を返します。 }