Thắc mắc vòng for có cin vẫn chạy đúng và hàm upper_bound

#include <bits/stdc++.h>
using namespace std;
int n,i,a[100005];
main () {
    for(cin>>n;i<n;i++)cin>>a[i];
    sort(a,a+n);
    for(cin>>i;cin>>i;)cout<<upper_bound(a,a+n,i)-a<<endl; // dòng 7
}

Anh chị cho em hỏi ở dòng 7 cấu trúc của vòng for sao lại có 2 cin>>i vẫn đúng vậy ạ? Cho em hỏi luôn hàm upper_bound() có tác dụng gì vậy ạ?
Em cảm ơn.

Trước khi đưa ra các link đề giải quyết vấn đề của bạn, mình xin đưa ra lời khuyên sau đây nếu bạn là sinh viên (hoặc học chuyên ngành) CNTT:
Nên tập cách tìm kiếm thông tin trên mạng thông qua các keyword, để xem coi vấn đề của mình đã từng được hỏi trước đây chưa. Từ đó tránh hỏi lại những thứ đã có người hỏi rồi.

Link:

  1. Về cái cin >> i: Hỏi về while (cin>>x)?
  2. Về cái upper_bound(): https://nguyenvanhieu.vn/thu-vien-algorithm-cpp/#8-stdupper-bound
  3. Về Iterator trong hàm upper_bound() : https://cpp.daynhauhoc.com/11/2-stl-iterators/
5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?