제출 #1286524

#제출 시각아이디문제언어결과실행 시간메모리
1286524theiulius말 (IOI15_horses)C++20
컴파일 에러
0 ms0 KiB
#include<bits/stdc++.h> // #include "horses.h" using namespace std; #define ll long long #define int long long #define ff first #define ss second #define pb push_back const int N = 5e2 + 5; const int MOD = 1e9 + 7; int tree[4 * N + 1]; int a[N], b[N]; int namr = 1, n = 0; set<int> s; int my_pow(int x, int y){ if (y == 1){ return x; } int res = my_pow(x, y / 2) % MOD; int b = 1; if (y % 2){ b = y; } return ((res * res) % MOD * b) % MOD; } int my_div(int x){ return my_pow(x, MOD - 2); } // void update(int x, int l, int r, int pos, int val){ // pos da find const ari querize // if (l == r){ // tree[x] = val; // return; // } // // orobiti dzebna // int mid = (l + r) / 2; // if (pos <= mid){ // marcxniv // update(2 * x, l, mid, pos, val); // }else{ // update(2 * x + 1, mid + 1, r, pos, val); // } // tree[x] = max(tree[2 * x], tree[2 * x + 1]); // tree[2x] da tree[2x + 1] ukve datvlili gveqneba recursiis gamo // } // int get(int x, int l, int r, int tl, int tr){ // query const: tl, tr // if (tl <= l && r <= tr){ // return tree[x]; // } // int mid = (l + r) / 2; // int ans = 0; // if (tl <= mid){ // marcxniv // ans = get(2 * x, l, mid, tl, tr); // } // if (mid + 1 <= tr){ // marjvniv // ans = max(ans, get(2 * x + 1, mid + 1, r, tl, tr)); // } // return ans; // } void update(int x, int l, int r, int pos, int val){ b[pos] = val; } int get(int x, int l, int r, int tl, int tr){ int ma = 0; for (int i = tl; i <= tr; i++){ ma = max(ma, b[i]); } return ma; } int my_func(vector<int> x, vector<int> y){ int ans = 0, ansi = 0, pre = 1; for (int i = 0; i < x.size(); i++){ pre *= x[i]; if (ans < pre * y[i]){ ans = pre * y[i]; ansi = i; } } return ansi; } int init(int n1, int x[], int y[]) { n = n1; for (int i = 0; i < n; i++){ if (x[i] != 1){ s.insert(i); } } for (int i = 0; i < n; i++){ update(0, 0, n - 1, i, y[i]); } for (int i = 0; i < n; i++){ a[i] = x[i]; b[i] = y[i]; } // mtlianis namr for (int i = 0; i < n; i++){ namr *= x[i]; namr %= MOD; } return 0; } int solve(){ vector<int> x1, y1; auto it = s.end(); it--; int suf = 1; while (suf < 1e9){ suf *= (*it); x1.pb(*it); if (it == s.begin()){ break; } it--; } reverse(x1.begin(), x1.end()); for (int i = 0; i < x1.size() - 1; i++){ y1.pb(get(0, 0, n - 1, x1[i], x1[i + 1] - 1)); } // (*x.rbegin(), n); y1.pb(get(0, 0, n - 1, (*x1.rbegin()), n - 1)); int r = my_func(x1, y1); int ans = namr; for (int i = r + 1; i < x1.size(); i++){ ans *= my_div(a[x1[i]]); } return ans; } int updateX(int pos, int val) { if (s.count(pos) && val == 1){ s.erase(pos); }else if (!s.count(pos) && val != 1){ s.insert(pos); } // namr-is shecvla namr = namr * my_div(a[pos]); namr *= val; a[pos] = val; return solve(); } int updateY(int pos, int val) { update(0, 0, n - 1, pos, val); return solve(); }

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

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