Submission #308287

#TimeUsernameProblemLanguageResultExecution timeMemory
308287andreiomdEmployment (JOI16_employment)C++11
10 / 100
5023 ms2976 KiB
#include <iostream>
#include <algorithm>

using namespace std;

typedef pair < int, int > PII;
typedef pair < int, PII > Type;

const int NMAX = 2e5 + 1, QMAX = 2e5 + 1;

int N, Q, A[NMAX];
Type Queries[QMAX];

int B[(NMAX + QMAX)], V[(NMAX + QMAX)];

static inline void Read ()
{
    ios_base :: sync_with_stdio(false);
    cin.tie(nullptr);

    cin >> N >> Q;

    for(int i = 1; i <= N; ++i)
        cin >> A[i], V[++V[0]] = A[i];

    for(int i = 1; i <= Q; ++i)
    {
        cin >> Queries[i].first >> Queries[i].second.first;

        if(Queries[i].first == 2)
            cin >> Queries[i].second.second, V[++V[0]] = Queries[i].second.second;
        else
            V[++V[0]] = Queries[i].second.first;
    }

    return;
}

static inline void Normalize ()
{
    sort(V + 1, V + V[0] + 1);

    B[++B[0]] = V[1];

    for(int i = 2; i <= N; ++i)
        if(V[i] != V[i - 1])
            B[++B[0]] = V[i];

    return;
}

static inline void Solve ()
{
    for(int i = 1; i <= Q; ++i)
        if(Queries[i].first == 1)
        {
            int ans = 0;

            for(int j = 1; j <= N; ++j)
                if(A[j] >= Queries[i].second.first && A[j - 1] < Queries[i].second.first)
                    ++ans;

            cout << ans << '\n';
        }
        else
            A[Queries[i].second.first] = Queries[i].second.second;

    return;
}

int main()
{
    Read();

    Normalize();

    Solve();

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...