Submission #796076

#TimeUsernameProblemLanguageResultExecution timeMemory
796076Sandarach151Secret (JOI14_secret)C++17
Compilation error
0 ms0 KiB
#include<bits/stdc++.h> #include "secret.h" using namespace std; int Secret(int x, int y){ cout << "? " << x << ' ' << y << '\n'; int a; cin >> a; return a; } class SparseTable { private: vector<vector<int>> table; vector<int> arr; int sze; int logSze; void build(int depth, int left, int right) { if (left == right) { return; } else { int mid = (left + right) / 2; table[depth][mid] = arr[mid]; for (int i = mid - 1; i >= left; i--) { table[depth][i] = Secret(table[depth][i + 1], arr[i]); } table[depth][mid + 1] = arr[mid + 1]; for (int i = mid + 2; i <= right; i++) { table[depth][i] = Secret(table[depth][i - 1], arr[i]); } build(depth + 1, left, mid); build(depth + 1, mid + 1, right); } } int privQuery(int depth, int queryLeft, int queryRight, int posLeft, int posRight) { if (queryLeft > posRight || queryRight <= posLeft) { return 0; } int mid = (posLeft + posRight) / 2; if (queryRight == mid) { return table[depth][queryLeft]; } else if (queryLeft == mid + 1) { return table[depth][queryRight]; } else { if (queryLeft <= mid && queryRight >= mid + 1) { return Secret(table[depth][queryLeft], table[depth][queryRight]); } else { if (queryLeft >= mid + 1) { return privQuery(depth + 1, queryLeft, queryRight, mid + 1, posRight); } else { return privQuery(depth + 1, queryLeft, queryRight, posLeft, mid); } } } } public: SparseTable(vector<int>& vect) { sze = vect.size(); logSze = ceil(log2(sze)) + 1; arr.resize(sze); for (int i = 0; i < (int)vect.size(); i++) { arr[i] = vect[i]; } table.resize(logSze, vector<int>(sze, 0)); // Initialize the table with 0s build(0, 0, sze - 1); } int query(int left, int right) { return privQuery(0, left, right, 0, sze - 1); } }; SparseTable* temp; vector<int> array2; void Init(int N, int A[]) { vector<int> vect(N); array2.resize(vect.size()); for (int i = 0; i < N; i++) { vect[i] = A[i]; array2[i] = A[i]; } temp = new SparseTable(vect); } int Query(int L, int R) { if (L == R) return array2[L]; return temp->query(L, R); }

Compilation message (stderr)

/usr/bin/ld: /tmp/ccJshkMV.o: in function `Secret(int, int)':
secret.cpp:(.text+0x0): multiple definition of `Secret(int, int)'; /tmp/ccKkYhEW.o:grader-full.cpp:(.text+0x2d0): first defined here
collect2: error: ld returned 1 exit status