提出 #49759468


ソースコード 拡げる

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tag_and_trait.hpp>
#include <ext/pb_ds/tree_policy.hpp>
namespace gt = __gnu_pbds;
#define IS_MULTITEST 0

using namespace std;

// #include "angel/math/modint.hpp"

#pragma region Macros
// clang-format off
using ll = long long; using uint = unsigned int; using ull = unsigned long long;
using i32 = int; using i64 = ll; using u32 = uint; using u64 = ull;
using i128 = __int128_t; using u128 = __uint128_t;
using Str = string;
template <class T> using Vec = vector<T>;
template <class T> using RevPriq = priority_queue<T, vector<T>, greater<T>>;
constexpr std::array<std::pair<int, int>, 4> dxy4 = {{{-1, 0}, {0, 1}, {1, 0}, {0, -1}}};
constexpr std::array<std::pair<int, int>, 8> dxy8 = {
    {{-1, -1}, {-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}}};
constexpr int inf32 = 1 << 30; constexpr ll inf64 = 1ll << 60;
constexpr char eoln = '\n';
#define L(i, l, r) for (int i = (l); i < (r); ++i)
#define R(i, l, r) for (int i = (r) - 1; i >= (l); --i)
#define ALL(x) (x).begin(), (x).end()
#define mem(a, x) memset((a), (x), sizeof(a))
#define sz(a) (int)((a).size())
#define fi first
#define se second
#define pb push_back
#define mp make_pair
// clang-format on
#pragma endregion

// Coding Space

int N;
Vec<int> L, R;
int Q;
Vec<int> P, X;

Vec<int> ans;
Vec<int> qs, ps;

struct UnionFind {
    int n;
    Vec<int> data;
    Vec<gt::tree<pair<int, int>, gt::null_type, less<pair<int, int>>, gt::rb_tree_tag,
                 gt::tree_order_statistics_node_update>>
        ds;

    UnionFind(Vec<int> rs) : n(rs.size()), data(n, -1) {
        ds.resize(n);
        L(i, 0, n) ds[i].insert({rs[i], i});
    }

    int find(int v) {
        if (data[v] < 0) return v;
        else return data[v] = find(data[v]);
    }

    int size(int v) {
        return -data[find(v)];
    }

    void merge(int a, int b) {
        a = find(a);
        b = find(b);
        if (a == b) return;
        if (size(a) < size(b)) swap(a, b);
        data[a] += data[b];
        data[b] = a;
        for (auto &e : ds[b]) ds[a].insert(e);
    }
};

UnionFind uft(Vec<int>(0, 0));
Vec<pair<int, pair<int, int>>> mgs;

void main_() {
    cin >> N;
    L.resize(N);
    R.resize(N);
    L(i, 0, N) {
        cin >> L[i] >> R[i];
    }
    cin >> Q;
    P.resize(Q);
    X.resize(Q);
    L(i, 0, Q) {
        cin >> P[i] >> X[i];
        --P[i];
    }

    qs.assign(Q, 0);
    iota(ALL(qs), 0);
    sort(ALL(qs), [&](int a, int b) { return X[a] > X[b]; });
    ps.assign(N, 0);
    iota(ALL(ps), 0);
    sort(ALL(ps), [&](int a, int b) {
        if (L[a] != L[b]) return L[a] < L[b];
        else return R[a] < R[b];
    });

    uft = UnionFind(R);
    int p = ps[0];
    L(i, 1, N) {
        if (R[p] < L[ps[i]]) {
            p = ps[i];
            continue;
        }
        int d = min(R[ps[i]] - L[ps[i]], (R[p] - L[p]) - (L[ps[i]] - L[p]));
        mgs.pb({d, {p, ps[i]}});
        if (R[p] < R[ps[i]]) p = ps[i];
    }
    sort(ALL(mgs), greater());
    int pi = 0;
    ans.resize(Q);
    L(q, 0, Q) {
        while (pi != size(mgs) and mgs[pi].first >= X[qs[q]]) {
            uft.merge(mgs[pi].se.fi, mgs[pi].se.se);
            ++pi;
        }

        int root = uft.find(P[qs[q]]);
        ans[qs[q]] = uft.size(P[qs[q]]);
        ans[qs[q]] -= uft.ds[root].order_of_key({L[P[qs[q]]] + X[qs[q]], 0});
        if (ans[qs[q]] == 0) ++ans[qs[q]];
    }

    for (auto e : ans) {
        cout << e << '\n';
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    if constexpr (IS_MULTITEST == 0) {
        main_();
    } else {
        // multitest (cf-style)
        int T;
        cin >> T;
        while (T--) {
            main_();
            cout << flush;
        }
    }
}

提出情報

提出日時
問題 F - 感染シミュレーション (Infection Simulation)
ユーザ Cyanmond
言語 C++ 20 (gcc 12.2)
得点 100
コード長 3951 Byte
結果 AC
実行時間 191 ms
メモリ 58168 KiB

コンパイルエラー

Main.cpp:12: warning: ignoring ‘#pragma region Macros’ [-Wunknown-pragmas]
   12 | #pragma region Macros
      | 
Main.cpp:35: warning: ignoring ‘#pragma endregion ’ [-Wunknown-pragmas]
   35 | #pragma endregion
      | 
Main.cpp: In function ‘void main_()’:
Main.cpp:122:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::pair<int, std::pair<int, int> >, std::allocator<std::pair<int, std::pair<int, int> > > >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
  122 |         while (pi != size(mgs) and mgs[pi].first >= X[qs[q]]) {
      |                ~~~^~~~~~~~~~~~

ジャッジ結果

セット名 Sample Subtask1 Subtask2 Subtask3 Subtask4 Subtask5 Subtask6 Subtask7 Subtask8 Subtask9 Subtask10
得点 / 配点 0 / 0 2 / 2 3 / 3 6 / 6 10 / 10 11 / 11 16 / 16 13 / 13 14 / 14 15 / 15 10 / 10
結果
AC × 7
AC × 5
AC × 10
AC × 12
AC × 18
AC × 43
AC × 65
AC × 11
AC × 23
AC × 23
AC × 116
セット名 テストケース
Sample sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, sample-05.txt, sample-06.txt, sample-07.txt
Subtask1 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, sample-03.txt
Subtask2 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, sample-02.txt, sample-03.txt
Subtask3 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 03-01.txt, 03-02.txt, sample-02.txt, sample-03.txt
Subtask4 04-01.txt, 04-02.txt, 04-03.txt, 04-04.txt, 04-05.txt, 04-06.txt, 04-07.txt, 04-08.txt, 04-09.txt, 04-10.txt, 04-11.txt, 04-12.txt, sample-01.txt, sample-02.txt, sample-04.txt, sample-05.txt, sample-06.txt, sample-07.txt
Subtask5 04-01.txt, 04-02.txt, 04-03.txt, 04-04.txt, 04-05.txt, 04-06.txt, 04-07.txt, 04-08.txt, 04-09.txt, 04-10.txt, 04-11.txt, 04-12.txt, 05-01.txt, 05-02.txt, 05-03.txt, 05-04.txt, 05-05.txt, 05-06.txt, 05-07.txt, 05-08.txt, 05-09.txt, 05-10.txt, 05-11.txt, 05-12.txt, 05-13.txt, 05-14.txt, 05-15.txt, 05-16.txt, 05-17.txt, 05-18.txt, 05-19.txt, 05-20.txt, 01-01.txt, 01-02.txt, 02-01.txt, 02-02.txt, sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, sample-05.txt, sample-06.txt, sample-07.txt
Subtask6 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 04-01.txt, 04-02.txt, 04-03.txt, 04-04.txt, 04-05.txt, 04-06.txt, 04-07.txt, 04-08.txt, 04-09.txt, 04-10.txt, 04-11.txt, 04-12.txt, 05-01.txt, 05-02.txt, 05-03.txt, 05-04.txt, 05-05.txt, 05-06.txt, 05-07.txt, 05-08.txt, 05-09.txt, 05-10.txt, 05-11.txt, 05-12.txt, 05-13.txt, 05-14.txt, 05-15.txt, 05-16.txt, 05-17.txt, 05-18.txt, 05-19.txt, 05-20.txt, 06-01.txt, 06-02.txt, 06-03.txt, 06-04.txt, 06-05.txt, 06-06.txt, 06-07.txt, 06-08.txt, 06-09.txt, 06-10.txt, 06-11.txt, 06-12.txt, 06-13.txt, 06-14.txt, 06-15.txt, 06-16.txt, 06-17.txt, 06-18.txt, sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, sample-05.txt, sample-06.txt, sample-07.txt
Subtask7 07-01.txt, 07-02.txt, 07-03.txt, 07-04.txt, 07-05.txt, 07-06.txt, 07-07.txt, 07-08.txt, 07-09.txt, 07-10.txt, sample-05.txt
Subtask8 07-01.txt, 07-02.txt, 07-03.txt, 07-04.txt, 07-05.txt, 07-06.txt, 07-07.txt, 07-08.txt, 07-09.txt, 07-10.txt, 08-01.txt, 08-02.txt, 08-03.txt, 08-04.txt, 08-05.txt, 08-06.txt, 08-07.txt, 08-08.txt, 08-09.txt, sample-01.txt, sample-03.txt, sample-05.txt, sample-06.txt
Subtask9 09-01.txt, 09-02.txt, 09-03.txt, 09-04.txt, 09-05.txt, 09-06.txt, 09-07.txt, 09-08.txt, 09-09.txt, 09-10.txt, 09-11.txt, 09-12.txt, 09-13.txt, 09-14.txt, 09-15.txt, 09-16.txt, 05-15.txt, 05-16.txt, 06-16.txt, sample-01.txt, sample-04.txt, sample-05.txt, sample-07.txt
Subtask10 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 03-01.txt, 03-02.txt, 04-01.txt, 04-02.txt, 04-03.txt, 04-04.txt, 04-05.txt, 04-06.txt, 04-07.txt, 04-08.txt, 04-09.txt, 04-10.txt, 04-11.txt, 04-12.txt, 05-01.txt, 05-02.txt, 05-03.txt, 05-04.txt, 05-05.txt, 05-06.txt, 05-07.txt, 05-08.txt, 05-09.txt, 05-10.txt, 05-11.txt, 05-12.txt, 05-13.txt, 05-14.txt, 05-15.txt, 05-16.txt, 05-17.txt, 05-18.txt, 05-19.txt, 05-20.txt, 06-01.txt, 06-02.txt, 06-03.txt, 06-04.txt, 06-05.txt, 06-06.txt, 06-07.txt, 06-08.txt, 06-09.txt, 06-10.txt, 06-11.txt, 06-12.txt, 06-13.txt, 06-14.txt, 06-15.txt, 06-16.txt, 06-17.txt, 06-18.txt, 07-01.txt, 07-02.txt, 07-03.txt, 07-04.txt, 07-05.txt, 07-06.txt, 07-07.txt, 07-08.txt, 07-09.txt, 07-10.txt, 08-01.txt, 08-02.txt, 08-03.txt, 08-04.txt, 08-05.txt, 08-06.txt, 08-07.txt, 08-08.txt, 08-09.txt, 09-01.txt, 09-02.txt, 09-03.txt, 09-04.txt, 09-05.txt, 09-06.txt, 09-07.txt, 09-08.txt, 09-09.txt, 09-10.txt, 09-11.txt, 09-12.txt, 09-13.txt, 09-14.txt, 09-15.txt, 09-16.txt, 10-01.txt, 10-02.txt, 10-03.txt, 10-04.txt, 10-05.txt, 10-06.txt, 10-07.txt, 10-08.txt, 10-09.txt, 10-10.txt, 10-11.txt, 10-12.txt, 10-13.txt, 10-14.txt, sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, sample-05.txt, sample-06.txt, sample-07.txt
ケース名 結果 実行時間 メモリ
01-01.txt AC 1 ms 3592 KiB
01-02.txt AC 1 ms 3572 KiB
01-03.txt AC 56 ms 27668 KiB
01-04.txt AC 56 ms 27680 KiB
02-01.txt AC 1 ms 3448 KiB
02-02.txt AC 1 ms 3588 KiB
02-03.txt AC 67 ms 27628 KiB
02-04.txt AC 67 ms 27620 KiB
03-01.txt AC 100 ms 29316 KiB
03-02.txt AC 101 ms 29396 KiB
04-01.txt AC 1 ms 3464 KiB
04-02.txt AC 1 ms 3460 KiB
04-03.txt AC 1 ms 3364 KiB
04-04.txt AC 1 ms 3616 KiB
04-05.txt AC 1 ms 3764 KiB
04-06.txt AC 1 ms 3636 KiB
04-07.txt AC 1 ms 3764 KiB
04-08.txt AC 1 ms 3600 KiB
04-09.txt AC 1 ms 3620 KiB
04-10.txt AC 1 ms 3592 KiB
04-11.txt AC 1 ms 3512 KiB
04-12.txt AC 1 ms 3492 KiB
05-01.txt AC 1 ms 3484 KiB
05-02.txt AC 1 ms 3588 KiB
05-03.txt AC 1 ms 3620 KiB
05-04.txt AC 1 ms 3504 KiB
05-05.txt AC 1 ms 3556 KiB
05-06.txt AC 1 ms 3616 KiB
05-07.txt AC 1 ms 3652 KiB
05-08.txt AC 1 ms 3628 KiB
05-09.txt AC 1 ms 3776 KiB
05-10.txt AC 1 ms 3576 KiB
05-11.txt AC 1 ms 3664 KiB
05-12.txt AC 1 ms 3560 KiB
05-13.txt AC 1 ms 3696 KiB
05-14.txt AC 1 ms 3628 KiB
05-15.txt AC 1 ms 3528 KiB
05-16.txt AC 1 ms 3692 KiB
05-17.txt AC 1 ms 3500 KiB
05-18.txt AC 1 ms 3644 KiB
05-19.txt AC 1 ms 3572 KiB
05-20.txt AC 1 ms 3684 KiB
06-01.txt AC 94 ms 35524 KiB
06-02.txt AC 92 ms 31064 KiB
06-03.txt AC 83 ms 28456 KiB
06-04.txt AC 84 ms 27804 KiB
06-05.txt AC 87 ms 27084 KiB
06-06.txt AC 82 ms 27356 KiB
06-07.txt AC 84 ms 27664 KiB
06-08.txt AC 53 ms 26772 KiB
06-09.txt AC 56 ms 27152 KiB
06-10.txt AC 51 ms 31652 KiB
06-11.txt AC 55 ms 32940 KiB
06-12.txt AC 33 ms 24332 KiB
06-13.txt AC 73 ms 26968 KiB
06-14.txt AC 60 ms 27608 KiB
06-15.txt AC 65 ms 26044 KiB
06-16.txt AC 61 ms 27252 KiB
06-17.txt AC 96 ms 30248 KiB
06-18.txt AC 73 ms 26104 KiB
07-01.txt AC 95 ms 34608 KiB
07-02.txt AC 189 ms 58168 KiB
07-03.txt AC 115 ms 39920 KiB
07-04.txt AC 85 ms 29120 KiB
07-05.txt AC 85 ms 29372 KiB
07-06.txt AC 84 ms 34148 KiB
07-07.txt AC 86 ms 34608 KiB
07-08.txt AC 78 ms 29112 KiB
07-09.txt AC 74 ms 29384 KiB
07-10.txt AC 61 ms 28068 KiB
08-01.txt AC 152 ms 40856 KiB
08-02.txt AC 128 ms 33088 KiB
08-03.txt AC 120 ms 30380 KiB
08-04.txt AC 118 ms 29848 KiB
08-05.txt AC 121 ms 29576 KiB
08-06.txt AC 127 ms 29332 KiB
08-07.txt AC 114 ms 29328 KiB
08-08.txt AC 110 ms 29396 KiB
08-09.txt AC 105 ms 29400 KiB
09-01.txt AC 155 ms 42564 KiB
09-02.txt AC 191 ms 44424 KiB
09-03.txt AC 166 ms 36840 KiB
09-04.txt AC 152 ms 33276 KiB
09-05.txt AC 150 ms 31428 KiB
09-06.txt AC 155 ms 31696 KiB
09-07.txt AC 138 ms 29924 KiB
09-08.txt AC 139 ms 29808 KiB
09-09.txt AC 140 ms 29748 KiB
09-10.txt AC 133 ms 29580 KiB
09-11.txt AC 107 ms 29328 KiB
09-12.txt AC 105 ms 29316 KiB
09-13.txt AC 103 ms 34596 KiB
09-14.txt AC 102 ms 34612 KiB
09-15.txt AC 121 ms 29392 KiB
09-16.txt AC 120 ms 29324 KiB
10-01.txt AC 107 ms 31708 KiB
10-02.txt AC 141 ms 32284 KiB
10-03.txt AC 134 ms 29580 KiB
10-04.txt AC 133 ms 29336 KiB
10-05.txt AC 110 ms 34400 KiB
10-06.txt AC 188 ms 54888 KiB
10-07.txt AC 127 ms 40160 KiB
10-08.txt AC 109 ms 29060 KiB
10-09.txt AC 107 ms 29484 KiB
10-10.txt AC 102 ms 34088 KiB
10-11.txt AC 105 ms 34600 KiB
10-12.txt AC 104 ms 29056 KiB
10-13.txt AC 97 ms 29328 KiB
10-14.txt AC 70 ms 28156 KiB
sample-01.txt AC 1 ms 3468 KiB
sample-02.txt AC 1 ms 3480 KiB
sample-03.txt AC 1 ms 3544 KiB
sample-04.txt AC 1 ms 3424 KiB
sample-05.txt AC 1 ms 3468 KiB
sample-06.txt AC 1 ms 3512 KiB
sample-07.txt AC 1 ms 3456 KiB