답안 #1104499

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1104499 2024-10-24T01:07:50 Z Boycl07 새 집 (APIO18_new_home) C++17
100 / 100
3026 ms 153068 KB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;

#define int ll
#define rep(i, n) for(int i = 1; (i) <= (n); ++i)
#define forn(i, l, r) for(int i = (l); i <= (r); ++i)
#define ford(i, r, l) for(int i = (r); i >= (l); --i)
#define FOR(i, n) for(int i = 0; i < (n); ++i)
#define FORD(i, n) for(int i = ((n) - 1); i >= 0; --i)
#define fi first
#define se second
#define pii pair<int, int>
#define pll pair<ll, ll>
#define pb push_back
#define endl "\n"
#define task "note"
#define sz(a) int(a.size())
#define C(x, y) make_pair(x, y)
#define all(a) (a).begin(), (a).end()
#define bit(i, mask) (mask >> i & 1)

template<typename T> bool maximize(T &res, const T &val) { if (res < val){ res = val; return true; }; return false; }
template<typename T> bool minimize(T &res, const T &val) { if (res > val){ res = val; return true; }; return false; }

inline int readInt()       {char c;while(c=getchar(),c!='-'&&(c<'0'||c>'9'));bool sign=(c=='-');if(sign)c=getchar();int n=c-'0';while(c=getchar(),c>='0'&&c<='9')n=10*n+c-'0';return(!sign)?n:-n;}
inline ll readLong()       {char c;while(c=getchar(),c!='-'&&(c<'0'||c>'9'));bool sign=(c=='-');if(sign)c=getchar();ll  n=c-'0';while(c=getchar(),c>='0'&&c<='9')n=10*n+c-'0';return(!sign)?n:-n;}
inline string readString() {char c;while(c=getchar(),c==' '||c=='\n'||c=='\t');string s({c});while(c=getchar(),c!=EOF&&c!=' '&&c!='\n'&&c!='\t')s+=c;return s;}

const int N = 6e5 + 3;
const int M = 5e3 + 100;
const int LIM = 5e5 + 3;
const int LOG = 16;
const int MOD = 1e9 + 7;
const int INF = 1e9 + 33;
const ll LINF = 2e16 + 33;


int n, k, q;

multiset<int> s[N];
int st[N << 1];

int X[N], T[N], A[N], B[N];
int lim;

void update(int id, int val)
{
    for(st[id += lim] = val; id >>= 1;) st[id] = max(st[id << 1], st[id << 1 | 1]);
}

int get(int l, int r)
{
    int res = -INF;
    for(l += lim, r += lim + 1; l < r; l >>= 1, r >>= 1)
    {
        if(l & 1) maximize(res, st[l++]);
        if(r & 1) maximize(res, st[--r]);
    }
    return res;
}

int ans[N];

void solve()
{

    cin >> n >> k >> q;

    vector<pii> zip;

    vector<array<int, 4>> lines;
    lim = n + k;
    rep(i, n) cin >> X[i] >> T[i] >> A[i] >> B[i], zip.pb({X[i], i});
    rep(i, k) s[i].insert(i), s[i].insert(INF), update(i, INF);

    sort(all(zip));
    rep(i, n)
    {
        X[i] = lower_bound(all(zip), make_pair(X[i], i)) - zip.begin() + 1;

        lines.pb({A[i], X[i] + k, T[i], 0});
        lines.pb({B[i] + 1, X[i] + k, T[i], 1});

    }
    rep(i, q)
    {
        int l, y;
        cin >> y >> l;
        lines.pb({l, INF, y, -i});
    }

    sort(all(lines));

    for(auto &[x, y, t, type] : lines)
    {
        if(type == 0)
        {
            auto it = s[t].upper_bound(y);
            int r = *it;
            int l = *(--it);

            update(l, y);
            update(y, r);
            s[t].insert(y);
        }
        else if(type < 0)
        {
            int lb = 0, rb = 1e9, res = -1;
            while(lb <= rb)
            {
                int mid = lb + rb >> 1;
                int l = lower_bound(all(zip), make_pair(t - mid, -INF)) - zip.begin() + k;
                int r = upper_bound(all(zip), make_pair(t + mid, INF)) - zip.begin() + k;

                if(get(1, l) <= r) res = mid, rb = mid - 1;
                else lb = mid + 1;
            }
            ans[-type] = res;
        }
        else
        {
            s[t].erase(s[t].find(y));
            auto it = s[t].upper_bound(y);
            int r = *it;
            int l = *(--it);
            update(l, r);
            update(y, -INF);
        }
    }
    rep(i, q) cout << ans[i] << endl;
}

signed main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    int TC = 1;

    if(fopen(task".inp", "r"))
    {
        freopen(task".inp", "r", stdin);
        freopen(task".out", "w", stdout);
    }



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

    return 0;
}

Compilation message

new_home.cpp: In function 'void solve()':
new_home.cpp:114:30: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
  114 |                 int mid = lb + rb >> 1;
      |                           ~~~^~~~
new_home.cpp: In function 'int main()':
new_home.cpp:145:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  145 |         freopen(task".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
new_home.cpp:146:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  146 |         freopen(task".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 40784 KB Output is correct
2 Correct 7 ms 40784 KB Output is correct
3 Correct 8 ms 40784 KB Output is correct
4 Correct 7 ms 40784 KB Output is correct
5 Correct 8 ms 40952 KB Output is correct
6 Correct 8 ms 40784 KB Output is correct
7 Correct 9 ms 40920 KB Output is correct
8 Correct 8 ms 40784 KB Output is correct
9 Correct 7 ms 40784 KB Output is correct
10 Correct 9 ms 40784 KB Output is correct
11 Correct 8 ms 40784 KB Output is correct
12 Correct 9 ms 40784 KB Output is correct
13 Correct 8 ms 40784 KB Output is correct
14 Correct 9 ms 40784 KB Output is correct
15 Correct 8 ms 40784 KB Output is correct
16 Correct 8 ms 40784 KB Output is correct
17 Correct 8 ms 40784 KB Output is correct
18 Correct 9 ms 40784 KB Output is correct
19 Correct 10 ms 40784 KB Output is correct
20 Correct 9 ms 40784 KB Output is correct
21 Correct 9 ms 40784 KB Output is correct
22 Correct 9 ms 40784 KB Output is correct
23 Correct 9 ms 40784 KB Output is correct
24 Correct 9 ms 40992 KB Output is correct
25 Correct 8 ms 40952 KB Output is correct
26 Correct 8 ms 40784 KB Output is correct
27 Correct 10 ms 40784 KB Output is correct
28 Correct 9 ms 40784 KB Output is correct
29 Correct 9 ms 40784 KB Output is correct
30 Correct 10 ms 40784 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 40784 KB Output is correct
2 Correct 7 ms 40784 KB Output is correct
3 Correct 8 ms 40784 KB Output is correct
4 Correct 7 ms 40784 KB Output is correct
5 Correct 8 ms 40952 KB Output is correct
6 Correct 8 ms 40784 KB Output is correct
7 Correct 9 ms 40920 KB Output is correct
8 Correct 8 ms 40784 KB Output is correct
9 Correct 7 ms 40784 KB Output is correct
10 Correct 9 ms 40784 KB Output is correct
11 Correct 8 ms 40784 KB Output is correct
12 Correct 9 ms 40784 KB Output is correct
13 Correct 8 ms 40784 KB Output is correct
14 Correct 9 ms 40784 KB Output is correct
15 Correct 8 ms 40784 KB Output is correct
16 Correct 8 ms 40784 KB Output is correct
17 Correct 8 ms 40784 KB Output is correct
18 Correct 9 ms 40784 KB Output is correct
19 Correct 10 ms 40784 KB Output is correct
20 Correct 9 ms 40784 KB Output is correct
21 Correct 9 ms 40784 KB Output is correct
22 Correct 9 ms 40784 KB Output is correct
23 Correct 9 ms 40784 KB Output is correct
24 Correct 9 ms 40992 KB Output is correct
25 Correct 8 ms 40952 KB Output is correct
26 Correct 8 ms 40784 KB Output is correct
27 Correct 10 ms 40784 KB Output is correct
28 Correct 9 ms 40784 KB Output is correct
29 Correct 9 ms 40784 KB Output is correct
30 Correct 10 ms 40784 KB Output is correct
31 Correct 354 ms 55348 KB Output is correct
32 Correct 149 ms 54080 KB Output is correct
33 Correct 411 ms 55888 KB Output is correct
34 Correct 351 ms 55872 KB Output is correct
35 Correct 404 ms 55352 KB Output is correct
36 Correct 393 ms 55348 KB Output is correct
37 Correct 349 ms 54084 KB Output is correct
38 Correct 404 ms 54080 KB Output is correct
39 Correct 311 ms 54080 KB Output is correct
40 Correct 319 ms 55872 KB Output is correct
41 Correct 213 ms 54084 KB Output is correct
42 Correct 189 ms 54088 KB Output is correct
43 Correct 144 ms 55344 KB Output is correct
44 Correct 211 ms 54084 KB Output is correct
45 Correct 243 ms 54076 KB Output is correct
46 Correct 259 ms 54080 KB Output is correct
47 Correct 194 ms 54080 KB Output is correct
48 Correct 232 ms 52100 KB Output is correct
49 Correct 231 ms 54076 KB Output is correct
50 Correct 211 ms 54084 KB Output is correct
51 Correct 301 ms 54080 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1455 ms 116732 KB Output is correct
2 Correct 2319 ms 120220 KB Output is correct
3 Correct 1507 ms 153064 KB Output is correct
4 Correct 1515 ms 134052 KB Output is correct
5 Correct 2315 ms 119932 KB Output is correct
6 Correct 2284 ms 120188 KB Output is correct
7 Correct 1477 ms 153068 KB Output is correct
8 Correct 1594 ms 134168 KB Output is correct
9 Correct 1721 ms 125360 KB Output is correct
10 Correct 2492 ms 121460 KB Output is correct
11 Correct 1725 ms 120368 KB Output is correct
12 Correct 1838 ms 121220 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2209 ms 115988 KB Output is correct
2 Correct 986 ms 111144 KB Output is correct
3 Correct 2897 ms 120144 KB Output is correct
4 Correct 1332 ms 150944 KB Output is correct
5 Correct 1165 ms 128168 KB Output is correct
6 Correct 1231 ms 131940 KB Output is correct
7 Correct 2796 ms 119604 KB Output is correct
8 Correct 2768 ms 119404 KB Output is correct
9 Correct 1529 ms 152088 KB Output is correct
10 Correct 1570 ms 130340 KB Output is correct
11 Correct 1774 ms 123536 KB Output is correct
12 Correct 2512 ms 121028 KB Output is correct
13 Correct 1625 ms 119440 KB Output is correct
14 Correct 1591 ms 118912 KB Output is correct
15 Correct 1903 ms 120008 KB Output is correct
16 Correct 2045 ms 120856 KB Output is correct
17 Correct 1990 ms 118548 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 40784 KB Output is correct
2 Correct 7 ms 40784 KB Output is correct
3 Correct 8 ms 40784 KB Output is correct
4 Correct 7 ms 40784 KB Output is correct
5 Correct 8 ms 40952 KB Output is correct
6 Correct 8 ms 40784 KB Output is correct
7 Correct 9 ms 40920 KB Output is correct
8 Correct 8 ms 40784 KB Output is correct
9 Correct 7 ms 40784 KB Output is correct
10 Correct 9 ms 40784 KB Output is correct
11 Correct 8 ms 40784 KB Output is correct
12 Correct 9 ms 40784 KB Output is correct
13 Correct 8 ms 40784 KB Output is correct
14 Correct 9 ms 40784 KB Output is correct
15 Correct 8 ms 40784 KB Output is correct
16 Correct 8 ms 40784 KB Output is correct
17 Correct 8 ms 40784 KB Output is correct
18 Correct 9 ms 40784 KB Output is correct
19 Correct 10 ms 40784 KB Output is correct
20 Correct 9 ms 40784 KB Output is correct
21 Correct 9 ms 40784 KB Output is correct
22 Correct 9 ms 40784 KB Output is correct
23 Correct 9 ms 40784 KB Output is correct
24 Correct 9 ms 40992 KB Output is correct
25 Correct 8 ms 40952 KB Output is correct
26 Correct 8 ms 40784 KB Output is correct
27 Correct 10 ms 40784 KB Output is correct
28 Correct 9 ms 40784 KB Output is correct
29 Correct 9 ms 40784 KB Output is correct
30 Correct 10 ms 40784 KB Output is correct
31 Correct 354 ms 55348 KB Output is correct
32 Correct 149 ms 54080 KB Output is correct
33 Correct 411 ms 55888 KB Output is correct
34 Correct 351 ms 55872 KB Output is correct
35 Correct 404 ms 55352 KB Output is correct
36 Correct 393 ms 55348 KB Output is correct
37 Correct 349 ms 54084 KB Output is correct
38 Correct 404 ms 54080 KB Output is correct
39 Correct 311 ms 54080 KB Output is correct
40 Correct 319 ms 55872 KB Output is correct
41 Correct 213 ms 54084 KB Output is correct
42 Correct 189 ms 54088 KB Output is correct
43 Correct 144 ms 55344 KB Output is correct
44 Correct 211 ms 54084 KB Output is correct
45 Correct 243 ms 54076 KB Output is correct
46 Correct 259 ms 54080 KB Output is correct
47 Correct 194 ms 54080 KB Output is correct
48 Correct 232 ms 52100 KB Output is correct
49 Correct 231 ms 54076 KB Output is correct
50 Correct 211 ms 54084 KB Output is correct
51 Correct 301 ms 54080 KB Output is correct
52 Correct 225 ms 62776 KB Output is correct
53 Correct 229 ms 62336 KB Output is correct
54 Correct 208 ms 57928 KB Output is correct
55 Correct 269 ms 55888 KB Output is correct
56 Correct 289 ms 59968 KB Output is correct
57 Correct 266 ms 54584 KB Output is correct
58 Correct 238 ms 55876 KB Output is correct
59 Correct 245 ms 59652 KB Output is correct
60 Correct 222 ms 54752 KB Output is correct
61 Correct 191 ms 64428 KB Output is correct
62 Correct 290 ms 58508 KB Output is correct
63 Correct 224 ms 59708 KB Output is correct
64 Correct 290 ms 57908 KB Output is correct
65 Correct 245 ms 55104 KB Output is correct
66 Correct 245 ms 54452 KB Output is correct
67 Correct 187 ms 54600 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 40784 KB Output is correct
2 Correct 7 ms 40784 KB Output is correct
3 Correct 8 ms 40784 KB Output is correct
4 Correct 7 ms 40784 KB Output is correct
5 Correct 8 ms 40952 KB Output is correct
6 Correct 8 ms 40784 KB Output is correct
7 Correct 9 ms 40920 KB Output is correct
8 Correct 8 ms 40784 KB Output is correct
9 Correct 7 ms 40784 KB Output is correct
10 Correct 9 ms 40784 KB Output is correct
11 Correct 8 ms 40784 KB Output is correct
12 Correct 9 ms 40784 KB Output is correct
13 Correct 8 ms 40784 KB Output is correct
14 Correct 9 ms 40784 KB Output is correct
15 Correct 8 ms 40784 KB Output is correct
16 Correct 8 ms 40784 KB Output is correct
17 Correct 8 ms 40784 KB Output is correct
18 Correct 9 ms 40784 KB Output is correct
19 Correct 10 ms 40784 KB Output is correct
20 Correct 9 ms 40784 KB Output is correct
21 Correct 9 ms 40784 KB Output is correct
22 Correct 9 ms 40784 KB Output is correct
23 Correct 9 ms 40784 KB Output is correct
24 Correct 9 ms 40992 KB Output is correct
25 Correct 8 ms 40952 KB Output is correct
26 Correct 8 ms 40784 KB Output is correct
27 Correct 10 ms 40784 KB Output is correct
28 Correct 9 ms 40784 KB Output is correct
29 Correct 9 ms 40784 KB Output is correct
30 Correct 10 ms 40784 KB Output is correct
31 Correct 354 ms 55348 KB Output is correct
32 Correct 149 ms 54080 KB Output is correct
33 Correct 411 ms 55888 KB Output is correct
34 Correct 351 ms 55872 KB Output is correct
35 Correct 404 ms 55352 KB Output is correct
36 Correct 393 ms 55348 KB Output is correct
37 Correct 349 ms 54084 KB Output is correct
38 Correct 404 ms 54080 KB Output is correct
39 Correct 311 ms 54080 KB Output is correct
40 Correct 319 ms 55872 KB Output is correct
41 Correct 213 ms 54084 KB Output is correct
42 Correct 189 ms 54088 KB Output is correct
43 Correct 144 ms 55344 KB Output is correct
44 Correct 211 ms 54084 KB Output is correct
45 Correct 243 ms 54076 KB Output is correct
46 Correct 259 ms 54080 KB Output is correct
47 Correct 194 ms 54080 KB Output is correct
48 Correct 232 ms 52100 KB Output is correct
49 Correct 231 ms 54076 KB Output is correct
50 Correct 211 ms 54084 KB Output is correct
51 Correct 301 ms 54080 KB Output is correct
52 Correct 1455 ms 116732 KB Output is correct
53 Correct 2319 ms 120220 KB Output is correct
54 Correct 1507 ms 153064 KB Output is correct
55 Correct 1515 ms 134052 KB Output is correct
56 Correct 2315 ms 119932 KB Output is correct
57 Correct 2284 ms 120188 KB Output is correct
58 Correct 1477 ms 153068 KB Output is correct
59 Correct 1594 ms 134168 KB Output is correct
60 Correct 1721 ms 125360 KB Output is correct
61 Correct 2492 ms 121460 KB Output is correct
62 Correct 1725 ms 120368 KB Output is correct
63 Correct 1838 ms 121220 KB Output is correct
64 Correct 2209 ms 115988 KB Output is correct
65 Correct 986 ms 111144 KB Output is correct
66 Correct 2897 ms 120144 KB Output is correct
67 Correct 1332 ms 150944 KB Output is correct
68 Correct 1165 ms 128168 KB Output is correct
69 Correct 1231 ms 131940 KB Output is correct
70 Correct 2796 ms 119604 KB Output is correct
71 Correct 2768 ms 119404 KB Output is correct
72 Correct 1529 ms 152088 KB Output is correct
73 Correct 1570 ms 130340 KB Output is correct
74 Correct 1774 ms 123536 KB Output is correct
75 Correct 2512 ms 121028 KB Output is correct
76 Correct 1625 ms 119440 KB Output is correct
77 Correct 1591 ms 118912 KB Output is correct
78 Correct 1903 ms 120008 KB Output is correct
79 Correct 2045 ms 120856 KB Output is correct
80 Correct 1990 ms 118548 KB Output is correct
81 Correct 225 ms 62776 KB Output is correct
82 Correct 229 ms 62336 KB Output is correct
83 Correct 208 ms 57928 KB Output is correct
84 Correct 269 ms 55888 KB Output is correct
85 Correct 289 ms 59968 KB Output is correct
86 Correct 266 ms 54584 KB Output is correct
87 Correct 238 ms 55876 KB Output is correct
88 Correct 245 ms 59652 KB Output is correct
89 Correct 222 ms 54752 KB Output is correct
90 Correct 191 ms 64428 KB Output is correct
91 Correct 290 ms 58508 KB Output is correct
92 Correct 224 ms 59708 KB Output is correct
93 Correct 290 ms 57908 KB Output is correct
94 Correct 245 ms 55104 KB Output is correct
95 Correct 245 ms 54452 KB Output is correct
96 Correct 187 ms 54600 KB Output is correct
97 Correct 1324 ms 152860 KB Output is correct
98 Correct 917 ms 103524 KB Output is correct
99 Correct 2909 ms 110356 KB Output is correct
100 Correct 1224 ms 144096 KB Output is correct
101 Correct 1164 ms 132148 KB Output is correct
102 Correct 3026 ms 122196 KB Output is correct
103 Correct 2328 ms 109564 KB Output is correct
104 Correct 2349 ms 109008 KB Output is correct
105 Correct 1920 ms 108120 KB Output is correct
106 Correct 2021 ms 105744 KB Output is correct
107 Correct 1551 ms 126448 KB Output is correct
108 Correct 1611 ms 133388 KB Output is correct
109 Correct 1548 ms 113952 KB Output is correct
110 Correct 1304 ms 125912 KB Output is correct
111 Correct 1336 ms 130072 KB Output is correct
112 Correct 1174 ms 111840 KB Output is correct
113 Correct 948 ms 150836 KB Output is correct
114 Correct 1417 ms 151204 KB Output is correct
115 Correct 1469 ms 135184 KB Output is correct
116 Correct 1600 ms 130068 KB Output is correct
117 Correct 1485 ms 115996 KB Output is correct
118 Correct 1291 ms 107800 KB Output is correct
119 Correct 1018 ms 105048 KB Output is correct
120 Correct 1058 ms 102940 KB Output is correct
121 Correct 1338 ms 107800 KB Output is correct
122 Correct 1510 ms 107804 KB Output is correct
123 Correct 1505 ms 108312 KB Output is correct
124 Correct 1409 ms 108572 KB Output is correct
125 Correct 1775 ms 108492 KB Output is correct
126 Correct 1336 ms 108792 KB Output is correct