제출 #14094

#제출 시각아이디문제언어결과실행 시간메모리
14094exqt이상한 수열 (OJUZ10_bizarre)C++98
100 / 100
27 ms2112 KiB
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <utility>
using namespace std;

#define in cin
#define out cout
#define _abs(a) ((a)>0?(a):(-(a)))
#define _min(a,b) ((a)>(b)?(b):(a))
#define _max(a,b) ((a)<(b)?(b):(a))
#define isin(a,b,c) ((a)<=(c)&&(c)<=(b))
#define REP(i,e) for(int i=0; i<e; i++)
#define REPE(i,s,e) for(int i=s; i<=e; i++)
#define REPR(i,s,e) for(int i=e; i>=s; i--)

int main()
{
    int n;
    in >> n;
    vector<int> v(n);
    REP(i,n) in >> v[i];
    int m; in >> m;

    if(m <= n)
    {
        out << v[m-1] << endl;
        return 0;
    }

    //
    vector<int> vv(n);
    REP(i,n) vv[i] = v[i];
    sort(vv.begin(), vv.end());

    //
    int cnt = 1;
    REP(i,n-1) {
        if(vv[i] != vv[i+1]) cnt++;
    }

    //
    int tt = lower_bound(vv.begin(), vv.end(), cnt)-vv.begin();
    if(tt != n)
    {
        tt = vv[tt];

        m -= (n+1);
        if(tt-cnt > m)
            out << cnt + m;
        else
            out << tt;
    }
    else
    {
        out << cnt+(m-n)-1 << endl;
    }


    return 0;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...