Submission #1035794

#TimeUsernameProblemLanguageResultExecution timeMemory
1035794DeathIsAweDetecting Molecules (IOI16_molecules)C++14
Compilation error
0 ms0 KiB
#include "molecules.h" #include <bits/stdc++.h> using namespace std; #define int long long vector<int> find_subset(int l, int u, vector<int> w) { vector<pair<int,int>> arr; int n = w.size(), temp = 0; for (int i=0;i<n;i++) { arr.push_back(make_pair(w[i],i)); } sort(arr.begin(), arr.end()); vector<int> prefix(n); for (int i=0;i<n;i++) { temp += arr[i].first; prefix[i] = temp; } vector<int> ansarr; if (n == 1) { if (l <= w[0] && w[0] <= u) { ansarr.push_back(0); return ansarr; } else { return ansarr; } } int bottom = 0, top = n-1, middle, base; while (bottom + 1 < top) { middle = (bottom + top)/2; if (prefix[middle] <= l) { bottom = middle; } else if (prefix[middle] <= u) { for (int i=0;i<middle+1;i++) { ansarr.push_back(arr[i].second); } return ansarr; } else { top = middle; } } //cout << top << ' ' << bottom << '\n'; if (prefix[top] < l) { base = top; } else if (prefix[top] <= u) { for (int i=0;i<top+1;i++) { ansarr.push_back(arr[i].second); } return ansarr; } else if (prefix[bottom] < l) { base = bottom; } else if (prefix[bottom] <= u) { for (int i=0;i<bottom+1;i++) { ansarr.push_back(arr[i].second); } return ansarr; } else { return ansarr; } int anstotal = prefix[base], anstart = 0; for (int i=0;i<n-base;i++) { if (anstotal < l) { if (i == n-base-1) { return ansarr; } anstotal = prefix[i+base+1] - prefix[i]; } else { anstart = i; break; } } int gap = anstart-1; for (int i=0;i<base+1;i++) { if (anstotal < u) { for (int j=anstart-1;j<anstart+base+1;j++) { if (j == gap) { continue; } ansarr.push_back(arr[j].second); } break; } else { anstotal += arr[gap].first - arr[gap+1].first; } } return ansarr; }

Compilation message (stderr)

/usr/bin/ld: /tmp/ccdZRSeJ.o: in function `main':
grader.cpp:(.text.startup+0x18d): undefined reference to `find_subset(int, int, std::vector<int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status