Submission #1225677


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
int n, q;
const int N = 300000;
int a[N], b[N], c[N];
int del[N], odel[N], ncg[N], acg[N];
struct node
{
    int l, r;
} interval[N];
int tot;
int used[N], ipb, npb;
int comp_1(node a, node b) {return a.r > b.r;}
struct Scomp_1 { int operator () (node a, node b) {return a.l < b.l;}};
int comp_2(node a, node b) {return a.l < b.l;}
struct Scomp_2 { int operator () (node a, node b) {return a.r > b.r;}};
int ans0 = 0, ans[N];
multiset <node, Scomp_1> S1;
multiset <node, Scomp_2> S2;
int main()
{
    cin >> n; n ++;
    for (int i = 1; i < n; ++ i)
        cin >> a[i] >> b[i];
    for (int i = 1; i <= n; ++ i)
        cin >> c[i];
    sort(c + 1, c + n + 1);
    for (int i = 1; i < n; ++ i)
    {
        a[i] = lower_bound(c + 1, c + n + 1, a[i]) - c,
        b[i] = lower_bound(c + 1, c + n + 1, b[i]) - c;
        if (b[i] < a[i]) interval[++ tot] = (node){b[i], a[i] - 1};
    }
    for (int i = 1; i <= n; ++ i)
        del[i] = -1;
    for (int i = 1; i < n; ++ i)
        del[a[i]] ++;
    for (int i = 1; i <= n; ++ i)
        del[i] += del[i - 1];
    for (int i = 1; i <= n; ++ i)
        odel[i] = del[i];

    sort(interval + 1, interval + tot + 1, comp_1);
    for (int i = n, j = 1, p = 0; i >= 1; -- i)
    {
        p += ncg[i];
        del[i] += p;
        while (j <= tot && interval[j].r == i)
        {
            S1.insert(interval[j]); j ++;
        }
        while (del[i] < -1)
        {
            multiset <node, Scomp_1> :: iterator nw;
            if (S1.empty())
                goto LETS_SAY_GG;
            nw = S1.begin();
            if (i < nw -> l)
                goto LETS_SAY_GG;
            else
            {
                ans0 --;
                acg[(nw -> l)] ++;
                acg[(nw -> r) + 1] --;
                ncg[(nw -> l) - 1] --;
                p ++;
                del[i] ++;
            }
            S1.erase(nw);
        }
    }

    for (int i = 1; i <= n; ++ i)
        acg[i] += acg[i - 1], del[i] = odel[i] + acg[i];

    tot = 0;
    for (multiset <node, Scomp_1> :: iterator it = S1.begin(); it != S1.end(); ++ it)
        interval[++ tot] = *it;

    sort(interval + 1, interval + tot + 1, comp_2);
    memset(ncg, 0, sizeof ncg);
    for (int i = 1, j = 1, p = 0; i <= n; ++ i)
    {
        if (npb)
        {
            ans[i] = 666;
            continue;
        }
        p += ncg[i];
        del[i] += p;
        while (j <= tot && interval[j].l == i)
        {
            S2.insert(interval[j]); j ++;
        }
        if (del[i] < 0)
        {
            multiset <node, Scomp_2> :: iterator nw;
            if (S2.empty()) goto I_WANT_JUMP;
            nw = S2.begin();
            if (i > nw -> r)
            {
                I_WANT_JUMP:npb = 1;
                ans[i] = 666;
                continue;
            }
            else
            {
                ans[i] = ans[i - 1] - 1;
                ncg[(nw -> r) + 1] --;
                p ++;
                del[i] ++;
            }
            S2.erase(nw);
        }
        else
            ans[i] = ans[i - 1];
    }

    cin >> q;
    for (int i = 1; i <= q; ++ i)
    {
        int d, e;
        cin >> d >> e;
        d = lower_bound(c + 1, c + n + 1, d) - c,
        e = lower_bound(c + 1, c + n + 1, e) - c;
        int nwans = -1;
        if (ans[d - 1] != 666) nwans = max(nwans, n + ans[d - 1] + ans0);
        if (ans[e - 1] != 666) nwans = max(nwans, n - 1 + ans[e - 1] + ans0);
        cout << nwans << "\n";
    }
    return 0;
    LETS_SAY_GG:cin >> q;
    for (int i = 1; i <= q; ++ i)
    {
        cout << -1 << "\n";
    }
}

Submission Info

Submission Time
Task F - Two Faced Cards
User AwD
Language C++14 (GCC 5.4.1)
Score 2000
Code Size 3779 Byte
Status AC
Exec Time 541 ms
Memory 20864 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 2000 / 2000
Status
AC × 3
AC × 61
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt, subtask_1_41.txt, subtask_1_42.txt, subtask_1_43.txt, subtask_1_44.txt, subtask_1_45.txt, subtask_1_46.txt, subtask_1_47.txt, subtask_1_48.txt, subtask_1_49.txt, subtask_1_50.txt, subtask_1_51.txt, subtask_1_52.txt, subtask_1_53.txt, subtask_1_54.txt, subtask_1_55.txt
Case Name Status Exec Time Memory
sample_01.txt AC 3 ms 10496 KB
sample_02.txt AC 3 ms 10496 KB
sample_03.txt AC 3 ms 10496 KB
subtask_1_01.txt AC 173 ms 13696 KB
subtask_1_02.txt AC 268 ms 13440 KB
subtask_1_03.txt AC 104 ms 12160 KB
subtask_1_04.txt AC 185 ms 13952 KB
subtask_1_05.txt AC 206 ms 12800 KB
subtask_1_06.txt AC 390 ms 13824 KB
subtask_1_07.txt AC 191 ms 10624 KB
subtask_1_08.txt AC 262 ms 13184 KB
subtask_1_09.txt AC 320 ms 18048 KB
subtask_1_10.txt AC 173 ms 12928 KB
subtask_1_11.txt AC 99 ms 10496 KB
subtask_1_12.txt AC 165 ms 11904 KB
subtask_1_13.txt AC 282 ms 15360 KB
subtask_1_14.txt AC 126 ms 12288 KB
subtask_1_15.txt AC 147 ms 10496 KB
subtask_1_16.txt AC 140 ms 11136 KB
subtask_1_17.txt AC 489 ms 20608 KB
subtask_1_18.txt AC 86 ms 12160 KB
subtask_1_19.txt AC 121 ms 10752 KB
subtask_1_20.txt AC 349 ms 13312 KB
subtask_1_21.txt AC 517 ms 16128 KB
subtask_1_22.txt AC 527 ms 16128 KB
subtask_1_23.txt AC 518 ms 16128 KB
subtask_1_24.txt AC 524 ms 16128 KB
subtask_1_25.txt AC 536 ms 20864 KB
subtask_1_26.txt AC 522 ms 15616 KB
subtask_1_27.txt AC 199 ms 10752 KB
subtask_1_28.txt AC 502 ms 13824 KB
subtask_1_29.txt AC 530 ms 20864 KB
subtask_1_30.txt AC 516 ms 15616 KB
subtask_1_31.txt AC 199 ms 10752 KB
subtask_1_32.txt AC 505 ms 13824 KB
subtask_1_33.txt AC 539 ms 20864 KB
subtask_1_34.txt AC 541 ms 15616 KB
subtask_1_35.txt AC 201 ms 10752 KB
subtask_1_36.txt AC 524 ms 13824 KB
subtask_1_37.txt AC 529 ms 20864 KB
subtask_1_38.txt AC 521 ms 15616 KB
subtask_1_39.txt AC 200 ms 10752 KB
subtask_1_40.txt AC 506 ms 13824 KB
subtask_1_41.txt AC 413 ms 16128 KB
subtask_1_42.txt AC 372 ms 11904 KB
subtask_1_43.txt AC 421 ms 20736 KB
subtask_1_44.txt AC 375 ms 11648 KB
subtask_1_45.txt AC 128 ms 10752 KB
subtask_1_46.txt AC 378 ms 16128 KB
subtask_1_47.txt AC 342 ms 11648 KB
subtask_1_48.txt AC 389 ms 19840 KB
subtask_1_49.txt AC 344 ms 11520 KB
subtask_1_50.txt AC 111 ms 10752 KB
subtask_1_51.txt AC 3 ms 10496 KB
subtask_1_52.txt AC 3 ms 10496 KB
subtask_1_53.txt AC 3 ms 10496 KB
subtask_1_54.txt AC 3 ms 10496 KB
subtask_1_55.txt AC 3 ms 10496 KB