Codeforces и Polygon могут быть недоступны в период с 23 мая, 7:00 (МСК) по 23 мая, 11:00 (МСК) в связи с проведением технических работ. ×

Блог пользователя ayaatiyeh

Автор ayaatiyeh, история, 7 лет назад, По-английски

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;

}

  • Проголосовать: нравится
  • -16
  • Проголосовать: не нравится