제출 #529304

#제출 시각아이디문제언어결과실행 시간메모리
529304EqualTurtle버섯 세기 (IOI20_mushrooms)C++14
컴파일 에러
0 ms0 KiB
#include<bits/stdc++.h> using namespace std; constexpr int maxk = 100; vector <int> sure[2]; int res = 0; int use_machine(int arr[]); void first_two() { int* arr = new int[2]; arr[0] = 0, arr[1] = 1; int curr = use_machine(arr); delete[] arr; if (curr == 0){ sure[0].push_back(1); return; } sure[1].push_back(1); arr = new int[2]; arr[0] = 0, arr[1] = 2; curr = use_machine(arr); delete[] arr; sure[curr].push_back(2); } void phase1(int k) { int* arr = new int[4]; int counter = (int)sure[0].size() + (int)sure[1].size(); int which = (sure[0].size() >= 2 ? 0 : 1); while ((int)sure[0].size() < k && (int)sure[1].size() < k) { arr[0] = sure[which][0], arr[1] = counter, arr[2] = sure[which][1], arr[3] = counter + 1; int curr = use_machine(arr); sure[(which ^ (curr % 2))].push_back(counter + 1); curr /= 2; sure[(which ^ curr)].push_back(counter + 1); counter += 2; } delete[] arr; } void phase2(int n) { int counter = (int)sure[0].size() + (int)sure[1].size(); int which = (sure[0].size() >= sure[1].size() ? 0 : 1); while (counter < n) { int siz = min(n - counter, (int)sure[which].size()); int* arr = new int[2 * siz]; for (int i = 0; i < siz; i++){ arr[i * 2] = sure[which][i]; arr[i * 2 + 1] = counter + i; } int curr = use_machine(arr); sure[(which ^ (curr % 2))].push_back(counter + 1); res += (which == 0 ? curr / 2 : siz - curr/2); which = (sure[0].size() >= sure[1].size() ? 0 : 1); delete[] arr; counter += siz; } res += (int)sure[0].size(); } int count_mushooms(int n) { // very small n corner sure[0].push_back(0); first_two(); // already know at least 2 of same kind phase1(min(n/2 - 1, maxk)); // already know at leat k of same kind phase2(n); return res; }

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

/usr/bin/ld: /tmp/cci4doCO.o: in function `phase1(int)':
mushrooms.cpp:(.text+0x1b6): undefined reference to `use_machine(int*)'
/usr/bin/ld: /tmp/cci4doCO.o: in function `phase2(int)':
mushrooms.cpp:(.text+0x34d): undefined reference to `use_machine(int*)'
/usr/bin/ld: /tmp/cci4doCO.o: in function `first_two()':
mushrooms.cpp:(.text+0x49b): undefined reference to `use_machine(int*)'
/usr/bin/ld: mushrooms.cpp:(.text+0x4fd): undefined reference to `use_machine(int*)'
/usr/bin/ld: /tmp/ccGhgewQ.o: in function `main':
stub.cpp:(.text.startup+0x86): undefined reference to `count_mushrooms(int)'
collect2: error: ld returned 1 exit status