답안 #49024

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
49024 2018-05-21T10:45:17 Z BThero 새 집 (APIO18_new_home) C++17
12 / 100
5000 ms 124048 KB
// Why am I so stupid? :c
#include <bits/stdc++.h>

#define pb push_back
#define mp make_pair

#define all(x) (x).begin(), (x).end()

#define fi first
#define se second

typedef long long ll;

using namespace std;

const int MAXN = 3e5+5;

const int INF = 1e9;

struct shop {
    int x, tp, l, r;

    shop() {
        x = tp = l = r = 0;
    }
} arr[MAXN];

struct que {
    int x, t;

    que() {
        x = t = 0;
    }
} req[MAXN];

vector < pair <int, int> > addEl[MAXN * 3];

vector < pair <int, int> > delEl[MAXN * 3];

vector < pair <int, int> > reqEl[MAXN * 3];

multiset <int> ms[MAXN];

int rl[MAXN * 3];

int n, m, k, q;

int ans[MAXN];

int mn[MAXN];

void compressTime() {
    vector <int> vv;

    for (int i = 1; i <= n; ++i) {
        vv.pb(arr[i].l);
        vv.pb(arr[i].r);
    }

    for (int i = 1; i <= q; ++i) {
        vv.pb(req[i].t);
    }

    sort(all(vv));
    vv.resize(unique(all(vv)) - vv.begin());

    m = vv.size();

    for (int i = 1; i <= n; ++i) {
        arr[i].l = upper_bound(all(vv), arr[i].l) - vv.begin();
        arr[i].r = upper_bound(all(vv), arr[i].r) - vv.begin();
    }

    for (int i = 1; i <= q; ++i) {
        req[i].t = upper_bound(all(vv), req[i].t) - vv.begin();
    }
}

void compressX() {
    vector <int> vv;

    for (int i = 1; i <= n; ++i) {
        vv.pb(arr[i].x);
    }

    for (int i = 1; i <= q; ++i) {
        vv.pb(req[i].x);
    }

    sort(all(vv));
    vv.resize(unique(all(vv)) - vv.begin());

    for (int i = 1, ps; i <= n; ++i) {
        ps = upper_bound(all(vv), arr[i].x) - vv.begin();
        rl[ps] = arr[i].x; arr[i].x = ps;
    }

    for (int i = 1, ps; i <= q; ++i) {
        ps = upper_bound(all(vv), req[i].x) - vv.begin();
        rl[ps] = req[i].x; req[i].x = ps;
    }
}

int dist(int x, int tp) {
    auto it = ms[tp].upper_bound(x);
    int ret = INF;

    if (it != ms[tp].end()) {
        ret = min(ret, rl[*it] - rl[x]);
    }

    if (it != ms[tp].begin()) {
        ret = min(ret, rl[x] - rl[*(--it)]);
    }

    return ret;
}

void solve() {
    scanf("%d %d %d", &n, &k, &q);

    for (int i = 1; i <= n; ++i) {
        scanf("%d %d", &arr[i].x, &arr[i].tp);
        scanf("%d %d", &arr[i].l, &arr[i].r);
    }

    for (int i = 1; i <= q; ++i) {
        scanf("%d %d", &req[i].x, &req[i].t);
    }

    compressTime();
    compressX();

    for (int i = 1; i <= n; ++i) {
        addEl[arr[i].l].pb(mp(arr[i].x, arr[i].tp));
        delEl[arr[i].r + 1].pb(mp(arr[i].x, arr[i].tp));
    }

    for (int i = 1; i <= q; ++i) {
        reqEl[req[i].t].pb(mp(req[i].x, i));
    }

    for (int i = 1; i <= m; ++i) {
        for (auto it : addEl[i]) {
            ms[it.se].insert(it.fi);
        }

        for (auto it : delEl[i]) {
            ms[it.se].erase(ms[it.se].find(it.fi));
        }

        for (auto it : reqEl[i]) {
            for (int j = 1; j <= k; ++j) {
                ans[it.se] = max(ans[it.se], dist(it.fi, j));
            }
        }
    }

    for (int i = 1; i <= q; ++i) {
        if (ans[i] == INF) {
            ans[i] = -1;
        }

        printf("%d\n", ans[i]);
    }
}

int main() {
#ifdef BThero
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif // BThero

    int tt = 1;

    while (tt--) {
        solve();
    }

    return 0;
}

Compilation message

new_home.cpp: In function 'void solve()':
new_home.cpp:120:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d %d", &n, &k, &q);
     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
new_home.cpp:123:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d", &arr[i].x, &arr[i].tp);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
new_home.cpp:124:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d", &arr[i].l, &arr[i].r);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
new_home.cpp:128:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d", &req[i].x, &req[i].t);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 67 ms 84856 KB Output is correct
2 Correct 72 ms 84964 KB Output is correct
3 Correct 77 ms 85000 KB Output is correct
4 Correct 75 ms 85204 KB Output is correct
5 Correct 73 ms 85204 KB Output is correct
6 Correct 74 ms 85288 KB Output is correct
7 Correct 69 ms 85288 KB Output is correct
8 Correct 72 ms 85288 KB Output is correct
9 Correct 70 ms 85288 KB Output is correct
10 Correct 68 ms 85288 KB Output is correct
11 Correct 67 ms 85288 KB Output is correct
12 Correct 68 ms 85288 KB Output is correct
13 Correct 68 ms 85288 KB Output is correct
14 Correct 68 ms 85288 KB Output is correct
15 Correct 76 ms 85288 KB Output is correct
16 Correct 74 ms 85288 KB Output is correct
17 Correct 73 ms 85288 KB Output is correct
18 Correct 67 ms 85288 KB Output is correct
19 Correct 68 ms 85288 KB Output is correct
20 Correct 72 ms 85288 KB Output is correct
21 Correct 77 ms 85288 KB Output is correct
22 Correct 71 ms 85288 KB Output is correct
23 Correct 77 ms 85304 KB Output is correct
24 Correct 72 ms 85304 KB Output is correct
25 Correct 82 ms 85304 KB Output is correct
26 Correct 79 ms 85304 KB Output is correct
27 Correct 75 ms 85304 KB Output is correct
28 Correct 74 ms 85304 KB Output is correct
29 Correct 78 ms 85304 KB Output is correct
30 Correct 69 ms 85304 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 67 ms 84856 KB Output is correct
2 Correct 72 ms 84964 KB Output is correct
3 Correct 77 ms 85000 KB Output is correct
4 Correct 75 ms 85204 KB Output is correct
5 Correct 73 ms 85204 KB Output is correct
6 Correct 74 ms 85288 KB Output is correct
7 Correct 69 ms 85288 KB Output is correct
8 Correct 72 ms 85288 KB Output is correct
9 Correct 70 ms 85288 KB Output is correct
10 Correct 68 ms 85288 KB Output is correct
11 Correct 67 ms 85288 KB Output is correct
12 Correct 68 ms 85288 KB Output is correct
13 Correct 68 ms 85288 KB Output is correct
14 Correct 68 ms 85288 KB Output is correct
15 Correct 76 ms 85288 KB Output is correct
16 Correct 74 ms 85288 KB Output is correct
17 Correct 73 ms 85288 KB Output is correct
18 Correct 67 ms 85288 KB Output is correct
19 Correct 68 ms 85288 KB Output is correct
20 Correct 72 ms 85288 KB Output is correct
21 Correct 77 ms 85288 KB Output is correct
22 Correct 71 ms 85288 KB Output is correct
23 Correct 77 ms 85304 KB Output is correct
24 Correct 72 ms 85304 KB Output is correct
25 Correct 82 ms 85304 KB Output is correct
26 Correct 79 ms 85304 KB Output is correct
27 Correct 75 ms 85304 KB Output is correct
28 Correct 74 ms 85304 KB Output is correct
29 Correct 78 ms 85304 KB Output is correct
30 Correct 69 ms 85304 KB Output is correct
31 Correct 3827 ms 94720 KB Output is correct
32 Correct 202 ms 94720 KB Output is correct
33 Correct 456 ms 94720 KB Output is correct
34 Correct 3048 ms 94720 KB Output is correct
35 Correct 1987 ms 94772 KB Output is correct
36 Correct 518 ms 94772 KB Output is correct
37 Correct 395 ms 94772 KB Output is correct
38 Correct 327 ms 94772 KB Output is correct
39 Correct 265 ms 94772 KB Output is correct
40 Correct 272 ms 94772 KB Output is correct
41 Correct 602 ms 94772 KB Output is correct
42 Correct 758 ms 94772 KB Output is correct
43 Correct 571 ms 94772 KB Output is correct
44 Correct 521 ms 94772 KB Output is correct
45 Correct 397 ms 94772 KB Output is correct
46 Correct 261 ms 94772 KB Output is correct
47 Correct 207 ms 94772 KB Output is correct
48 Correct 286 ms 94772 KB Output is correct
49 Correct 228 ms 94772 KB Output is correct
50 Correct 407 ms 94772 KB Output is correct
51 Correct 231 ms 94772 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 5092 ms 116716 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 5109 ms 124048 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 67 ms 84856 KB Output is correct
2 Correct 72 ms 84964 KB Output is correct
3 Correct 77 ms 85000 KB Output is correct
4 Correct 75 ms 85204 KB Output is correct
5 Correct 73 ms 85204 KB Output is correct
6 Correct 74 ms 85288 KB Output is correct
7 Correct 69 ms 85288 KB Output is correct
8 Correct 72 ms 85288 KB Output is correct
9 Correct 70 ms 85288 KB Output is correct
10 Correct 68 ms 85288 KB Output is correct
11 Correct 67 ms 85288 KB Output is correct
12 Correct 68 ms 85288 KB Output is correct
13 Correct 68 ms 85288 KB Output is correct
14 Correct 68 ms 85288 KB Output is correct
15 Correct 76 ms 85288 KB Output is correct
16 Correct 74 ms 85288 KB Output is correct
17 Correct 73 ms 85288 KB Output is correct
18 Correct 67 ms 85288 KB Output is correct
19 Correct 68 ms 85288 KB Output is correct
20 Correct 72 ms 85288 KB Output is correct
21 Correct 77 ms 85288 KB Output is correct
22 Correct 71 ms 85288 KB Output is correct
23 Correct 77 ms 85304 KB Output is correct
24 Correct 72 ms 85304 KB Output is correct
25 Correct 82 ms 85304 KB Output is correct
26 Correct 79 ms 85304 KB Output is correct
27 Correct 75 ms 85304 KB Output is correct
28 Correct 74 ms 85304 KB Output is correct
29 Correct 78 ms 85304 KB Output is correct
30 Correct 69 ms 85304 KB Output is correct
31 Correct 3827 ms 94720 KB Output is correct
32 Correct 202 ms 94720 KB Output is correct
33 Correct 456 ms 94720 KB Output is correct
34 Correct 3048 ms 94720 KB Output is correct
35 Correct 1987 ms 94772 KB Output is correct
36 Correct 518 ms 94772 KB Output is correct
37 Correct 395 ms 94772 KB Output is correct
38 Correct 327 ms 94772 KB Output is correct
39 Correct 265 ms 94772 KB Output is correct
40 Correct 272 ms 94772 KB Output is correct
41 Correct 602 ms 94772 KB Output is correct
42 Correct 758 ms 94772 KB Output is correct
43 Correct 571 ms 94772 KB Output is correct
44 Correct 521 ms 94772 KB Output is correct
45 Correct 397 ms 94772 KB Output is correct
46 Correct 261 ms 94772 KB Output is correct
47 Correct 207 ms 94772 KB Output is correct
48 Correct 286 ms 94772 KB Output is correct
49 Correct 228 ms 94772 KB Output is correct
50 Correct 407 ms 94772 KB Output is correct
51 Correct 231 ms 94772 KB Output is correct
52 Execution timed out 5081 ms 124048 KB Time limit exceeded
53 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 67 ms 84856 KB Output is correct
2 Correct 72 ms 84964 KB Output is correct
3 Correct 77 ms 85000 KB Output is correct
4 Correct 75 ms 85204 KB Output is correct
5 Correct 73 ms 85204 KB Output is correct
6 Correct 74 ms 85288 KB Output is correct
7 Correct 69 ms 85288 KB Output is correct
8 Correct 72 ms 85288 KB Output is correct
9 Correct 70 ms 85288 KB Output is correct
10 Correct 68 ms 85288 KB Output is correct
11 Correct 67 ms 85288 KB Output is correct
12 Correct 68 ms 85288 KB Output is correct
13 Correct 68 ms 85288 KB Output is correct
14 Correct 68 ms 85288 KB Output is correct
15 Correct 76 ms 85288 KB Output is correct
16 Correct 74 ms 85288 KB Output is correct
17 Correct 73 ms 85288 KB Output is correct
18 Correct 67 ms 85288 KB Output is correct
19 Correct 68 ms 85288 KB Output is correct
20 Correct 72 ms 85288 KB Output is correct
21 Correct 77 ms 85288 KB Output is correct
22 Correct 71 ms 85288 KB Output is correct
23 Correct 77 ms 85304 KB Output is correct
24 Correct 72 ms 85304 KB Output is correct
25 Correct 82 ms 85304 KB Output is correct
26 Correct 79 ms 85304 KB Output is correct
27 Correct 75 ms 85304 KB Output is correct
28 Correct 74 ms 85304 KB Output is correct
29 Correct 78 ms 85304 KB Output is correct
30 Correct 69 ms 85304 KB Output is correct
31 Correct 3827 ms 94720 KB Output is correct
32 Correct 202 ms 94720 KB Output is correct
33 Correct 456 ms 94720 KB Output is correct
34 Correct 3048 ms 94720 KB Output is correct
35 Correct 1987 ms 94772 KB Output is correct
36 Correct 518 ms 94772 KB Output is correct
37 Correct 395 ms 94772 KB Output is correct
38 Correct 327 ms 94772 KB Output is correct
39 Correct 265 ms 94772 KB Output is correct
40 Correct 272 ms 94772 KB Output is correct
41 Correct 602 ms 94772 KB Output is correct
42 Correct 758 ms 94772 KB Output is correct
43 Correct 571 ms 94772 KB Output is correct
44 Correct 521 ms 94772 KB Output is correct
45 Correct 397 ms 94772 KB Output is correct
46 Correct 261 ms 94772 KB Output is correct
47 Correct 207 ms 94772 KB Output is correct
48 Correct 286 ms 94772 KB Output is correct
49 Correct 228 ms 94772 KB Output is correct
50 Correct 407 ms 94772 KB Output is correct
51 Correct 231 ms 94772 KB Output is correct
52 Execution timed out 5092 ms 116716 KB Time limit exceeded
53 Halted 0 ms 0 KB -