제출 #1138031

#제출 시각아이디문제언어결과실행 시간메모리
1138031Ekber_Ekber말 (IOI15_horses)C++20
컴파일 에러
0 ms0 KiB
#include "horses.h" #include <bits/stdc++.h> #define int long long #define itn int #define endl "\n" #define ff first #define ss second #define pb push_back #define ppb pop_back #define ins insert #define lb lower_bound #define ub upper_bound #define bs binary_search #define count1 __builtin_popcount #define all(v) v.begin(), v.end() using namespace std; struct point{ int ans, sum; }; constexpr int MAX = 5e+5 + 3, INF = 2e+9, MOD = 1e+9 + 7, K = log2(MAX); vector <int> a, b; vector <point> t(4 * MAX); void build(int v, int tl, int tr) { if (tl == tr) { t[v].ans = (a[tl] * b[tl]) % MOD; t[v].sum = a[tl]; return; } int tm = (tl + tr) / 2; build(v*2, tl, tm); build(v*2+1, tm+1, tr); t[v].sum = (t[v*2].sum * t[v*2+1].sum) % MOD; t[v].ans = max(t[v*2].ans, (t[v*2].sum * t[v*2+1].ans) % MOD); } point find(int v, int tl, int tr, int l, int r) { if (l > r) return {INF, INF}; if (tl == l && tr == r) return t[v]; int tm = (tl + tr) / 2; point res1 = find(v*2, tl, tm, l, min(r, tm)); point res2 = find(v*2+1, tm+1, tr, max(l, tm+1), r); point res; res.sum = (res1.sum * res2.sum) % MOD; res.ans = max(res1.ans, (res1.sum * res2.ans) % MOD); return res; } void updatex(int v, int tl, int tr, int i, int x) { if (tl == tr) { t[v].ans = (x * b[tl]) % MOD; t[v].sum = x; a[tl] = x; return; } int tm = (tl + tr) / 2; if (i <= tm) { updatex(v*2, tl, tm, i, x); } else { updatex(v*2+1, tm+1, tr, i, x); } t[v].sum = (t[v*2].sum * t[v*2+1].sum) % MOD; t[v].ans = max(t[v*2].ans, (t[v*2].sum * t[v*2+1].ans) % MOD); } void updatey(int v, int tl, int tr, int i, int y) { if (tl == tr) { t[v].ans = (a[tl] * y) % MOD; b[tl] = y; return; } int tm = (tl + tr) / 2; if (i <= tm) { updatey(v*2, tl, tm, i, y); } else { updatey(v*2+1, tm+1, tr, i, y); } t[v].sum = (t[v*2].sum * t[v*2+1].sum) % MOD; t[v].ans = max(t[v*2].ans, (t[v*2].sum * t[v*2+1].ans) % MOD); } int init(int N, int X[], int Y[]) { for (int i=0; i < N; i++) { a.pb(X[i]); b.pb(Y[i]); } build(1, 0, N-1); return 0; } int updateX(int pos, int val) { return 0; } int updateY(int pos, int val) { return 0; }

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

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