Xin hướng làm bài tập (C++)

Cho N đoạn số nguyên [ai,bi]. Tìm 1 số mà số đó thuộc nhiều đoạn số nguyên nhất
VD: N=5
[0:10], [2;3] , [4;7], [3;5], [5;8] => 5

Gộp chung a[i] và b[i] vào rồi Sort, đếm xuối đến biến a[i] bất kì tăng biến count lên 1, b[i] bất kì giảm đi 1, kết quả là điểm mà giá trị count cực đại.

2 Likes
  1. Tìm số nhỏ nhất trong các đoạn số nguyên, gọi là max
  2. Tìm số lớn nhất trong các đoạn số nguyên, gọi là min
  3. Tạo một mảng có max - min + 1 phần tử, gọi là mảng DanhSachSo
  4. Duyệt qua các số trong các mảng, với mỗi số n được duyệt thì tăng DanhSachSo[n - min] thêm 1
  5. Tìm số lớn nhất trong DanhSachSo, index của số đó trong DanhSachSo cộng với min chính là kết quả cần tìm.

Cho số từ 1 đến 1e10 thôi là hết mem, bó tay :smiley:

1 Like

Dùng map được mà bác, nhưng mà sợ không gánh nổi độ phức tạp thời gian (quá to!).

Nên chọn cách nào có độ phức tạp chỉ phụ thuộc số đoạn.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?