結果

問題 No.3075 Mex Recurrence Formula
ユーザー ゼリトキ
提出日時 2025-03-28 22:38:42
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 572 ms / 2,000 ms
コード長 854 bytes
コンパイル時間 3,747 ms
コンパイル使用メモリ 286,336 KB
実行使用メモリ 41,088 KB
最終ジャッジ日時 2025-03-28 22:39:02
合計ジャッジ時間 16,805 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 46
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define ll long long
#define mod 998244353
int main(){
    cin.tie(0)->sync_with_stdio(0);
    cout.tie(0);
    ll N,X;
    cin>>N>>X;
    ll A[400009];
    for(int i=1;i<=N;i++) cin>>A[i];
    set<ll>S;
    map<ll,ll>M;
    for(int i=0;i<=N;i++){
        S.insert(i);
        M[i]=0;
    }
    for(int i=1;i<=N;i++){
        if(A[i]<=N){
            S.erase(A[i]);
            M[A[i]]++;
        }
    } 
    for(int i=N+1;i<=N*2+1;i++){
        A[i]=*S.begin();
        S.erase(S.begin());
        M[A[i]]=1;
        if(A[i-N]<=N) M[A[i-N]]--;
        if(M[A[i-N]]==0 && A[i-N]<=N) S.insert(A[i-N]);
    }
    if(X<=N){
        cout<<A[X]<<endl;
        return 0;
    }
    X-=N;
    N++;
    X=X%N;
    if(X==0) X=N;
    N--;
    cout<<A[N+X]<<endl;
}
0