MIN larger than me, and MAX smaller than me

Revision en2, by ayaatiyeh, 2017-06-28 11:48:42

int up(vector &v, int num) { int lo = 0, hi = sz(v) — 1; while (lo <= hi) { int mid = (lo + hi) / 2; if (v[mid] <= num) lo = mid + 1; else if (v[mid] > num) hi = mid — 1; } if (lo >= sz(v)) return -1; return v[lo]; }

int down(vector &v, int num) { int lo = 0, hi = sz(v) — 1; while (lo <= hi) { int mid = (lo + hi) / 2; if (v[mid] < num) lo = mid + 1; else if (v[mid] >= num) hi = mid — 1; } if (hi < 0) return -1; return v[hi]; }

int main() { PLAY();

int n;
cin >> n;
vector<int> v(n);
for (int i = 0; i < n; i++)
    cin >> v[i];
int q;
cin >> q;
while (q--) {
    int num;
    cin >> num;
    int first = down(v, num);
    int second = up(v, num);

    if (first == -1) cout << "X";
    else cout << first;
    if (second == -1) cout << " X" << endl;
    else cout << " " << second << endl;
}

return 0;

}

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en2 English ayaatiyeh 2017-06-28 11:48:42 1612
en1 English ayaatiyeh 2017-06-28 11:47:28 2566 Initial revision (published)