제출 #939950

#제출 시각아이디문제언어결과실행 시간메모리
939950LOLOLO팀들 (IOI15_teams)C++17
컴파일 에러
0 ms0 KiB
#include "teams.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; #define f first #define s second #define pb push_back #define ep emplace #define eb emplace_back #define lb lower_bound #define ub upper_bound #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define uniquev(v) sort(all(v)), (v).resize(unique(all(v)) - (v).begin()) #define mem(f,x) memset(f , x , sizeof(f)) #define sz(x) (int)(x).size() #define __lcm(a, b) (1ll * ((a) / __gcd((a), (b))) * (b)) #define mxx *max_element #define mnn *min_element #define cntbit(x) __builtin_popcountll(x) #define len(x) (int)(x.length()) const int N = 2e5 + 100; const int M = 2e6; int n; vector <pair <int, int>> save; struct node{ int s = 0; int lson, rson; node() {}; }; node seg[M]; int dd = 1, root[N]; void build(int id, int l, int r) { if (l == r) { return; } int m = (l + r) / 2; seg[id].lson = dd++; seg[id].rson = dd++; build(seg[id].lson, l, m); build(seg[id].rson, m + 1, r); } void upd(int pid, int id, int l, int r, int v) { if (l > v || r < v) return; if (l == r) { return; } int m = (l + r) / 2; if (v <= m) { seg[id].rson = seg[pid].rson; seg[id].lson = dd; seg[dd].s = seg[seg[pid].lson].s + 1; dd++; upd(seg[pid].lson, seg[id].lson, l, m, v); } else { seg[id].lson = seg[pid].lson; seg[id].rson = dd; seg[dd].s = seg[seg[pid].rson].s + 1; dd++; upd(seg[pid].rson, seg[id].rson, m + 1, r, v); } } ll get(int id, int l, int r, int u, int v) { if (l > v || r < u) return 0; if (l >= u && r <= v) { return seg[id].s; } int m = (l + r) / 2; return get(seg[id].lson, l, m, u, v) + get(seg[id].rson, m + 1, r, u, v); } void build() { root[0] = 0; build(0, 1, n); int j = 0; for (int i = 1; i <= n; i++) { root[i] = root[i - 1]; int lst = root[i - 1]; while (j < sz(save) && save[j].f <= i) { dd++; root[i] = dd; seg[i].s = seg[lst].s + 1; upd(lst, root[i], 1, n, save[j].s); lst = dd; j++; } } } void intit(int sz, int _a[], int _b[]) { n = sz; for (int i = 1; i <= n; i++) { save.emplace_back(_a[i - 1], _b[i - 1]); } sort(all(save)); build(); } int can(int m, int v[]) { sort(v, v + m); vector <int> a; for (int i = 0; i < m; i++) { a.pb(v[i]); } uniquev(a); deque < pair <int, int>> dq; for (int i = 0; i < sz(a) - 1; i++) { dq.push_back({a[i], get(root[a[i]], 1, n, a[i], a[i + 1] - 1)}); } for (int i = 0; i < m; i++) { int x = v[i]; while (sz(dq) && x < dq.front().f) dq.pop_front(); while (sz(dq)) { auto t = dq.front(); dq.pop_front(); if (t.f >= x) { if (t.s >= x) { t.s -= x; break; } else { x -= t.s; } } dq.push_front(t); } if (x) { return 0; } } return 1; } /*int main() { return 0; }*/

컴파일 시 표준 에러 (stderr) 메시지

/usr/bin/ld: /tmp/ccnjkUFD.o: in function `main':
grader.c:(.text.startup+0x88): undefined reference to `init(int, int*, int*)'
collect2: error: ld returned 1 exit status