You are on page 1of 3

CÂU LẠC BỘ (CLB.

CPP)
BigZero vừa tham gia vào một câu lạc bộ của nhà trường. Trong câu lạc bộ có n học
sinh được chia thành từng tổ khác nhau. Mỗi học sinh thuộc một tổ nào đó. Trong buổi
làm quen cậu muốn biết câu lạc bộ có bao nhiêu tổ. Khi gặp từng người cậu hỏi duy nhất
một câu hỏi: "Tổ của bạn có bao nhiêu người?". Từ kết quả trả lời của từng học sinh, cậu
đã xác định được số tổ của câu lạc bộ.
Ví dụ: với n = 7 và các câu trả lời lần lượt là 2, 3, 2, 3, 2, 2, 3 thì câu lạc bộ có 3 tổ
khác nhau.
Yêu cầu: cho n<106 và các câu trả lời. Hãy xác định số tổ của câu lạc bộ. Dữ liệu luôn
đảm bảo có kết quả.
Dữ liệu vào: từ file văn bản CLB.INP gồm:
• Dòng đầu tiên chứa một số tự nhiên n là số lượng học sinh được hỏi
• Dòng thứ hai ghi ra n số nguyên dương a1, a2, ..., an lần lượt là câu trả lời của n học
sinh được hỏi.
Kết quả: ghi ra file văn bản CLB.OUT gồm một số tự nhiên k là số tổ của câu lạc bộ.
Ví dụ:
CLB.INP CLB.OUT
7 3
2323223
Ràng buộc: có 50% số test tương ứng với n< 103
SỐ CẶP NGHỊCH THẾ (Invert.cpp)
Cho dãy số nguyên A gồm N số nguyên A1, A2, …, AN. Ta gọi cặp chỉ số (i,j) là một cặp
nghịch thế trên dãy A nếu thoả mãn 1  i  j  N và Ai  Aj .

Có Q yêu cầu, mỗi yêu cầu cho hai số nguyên L, R với 1  L  R  N , xét dãy gồm các
số hạng AL , AL+1,..., AR . Hãy tính số cặp nghịch thế của dãy số này, tức là tính số cặp chỉ
số (i,j) thoả mãn: L  i  j  R và Ai  Aj .

Dữ liệu cho trong file văn bản Invert.Inp gồm:


• Dòng thứ nhất ghi hai số nguyên dương N và Q.
• Dòng thứ hai ghi N số nguyên A1, A2, …, AN.
• Q dòng tiếp theo, mỗi dòng ghi hai số nguyên L và R (1  L  R  N ) ứng với một
yêu cầu.
Kết quả ghi ra file văn bản Invert.Out gồm Q dòng, mỗi dòng là số cặp nghịch thế ứng
với mỗi yêu cầu.
Ví dụ
Invert.Inp Invert.Out Giải thích
52 2 Yêu cầu 1: L=1, R=3; dãy: A1, A2, A3 =[2,3,1], ta
23142 1 có 2 cặp nghịch thế ứng với cặp chỉ số (1,3), (2,3).
13 Yêu cầu 2: L=4, R=5; dãy: A4, A5 =[4,2], ta có 1
45 cặp nghịch thế ứng với cặp chỉ số (4,5).
Giới hạn:
• 2  N  1000;
• 0  Ai  106 với i=1, 2, 3, …, N;
• Có 50% số test ứng với Q=1; L=1; R=N;
• Có 50% số test ứng với 2  Q  10;1  L  R  N .

BÁNH SINH NHẬT (bai1.cpp)


Hôm nay là sinh nhật Minh. Bà ngoại Minh đã tặng anh một chiếc bánh sinh nhật rất
đặc biệt. Chiếc bánh có chiều dài L. Minh mời N bạn đến dự sinh nhật. Để buổi sinh nhật
được vui vẻ Minh đã cắt bánh thành từng miếng dài 1 mét và đánh dấu chúng bằng những
con số từ 1 đến L, từ trái sang phải. Mỗi bạn đến sinh nhật sẽ nhận được một số ID duy
nhất (một số nguyên dương từ 1 đến N), cũng như một tờ giấy với hai số nguyên, P và K.
Mỗi bạn sau đó được phép lấy tất cả các phần từ thứ P đến thứ K. Các bạn lấy lần lượt
theo số thứ tự từ bạn đầu tiên, tiếp theo là bạn 2... Thứ tự này dẫn đến một số bạn nhận
được ít hơn phần bánh ban đầu nghĩ rằng mình sẽ nhận được.
Viết một chương trình để xác định bạn dự kiến sẽ nhận được nhiều bánh nhất, và bạn
nào thực sự có nhiều nhất.
Dữ liệu vào: file bai1.inp
• Dòng đầu tiên chứa số nguyên dương L (1 ≤ L ≤ 1000), chiều dài của bánh sinh
nhật.
• Dòng thứ hai chứa số nguyên dương N (1 ≤ N ≤ 1000), số lượng bạn của Minh.
• Mỗi dòng trong số N dòng sau chứa hai số nguyên dương Pi và Ki (1 ≤ Pi ≤ Ki ≤
L, i = 1..N).
Dữ liệu ra: file bai1.out
• Dòng đầu tiên của đầu ra phải chứa số thứ tự của bạn đang mong đợi để nhận được
nhiều bánh nhất.
• Dòng thứ hai chứa số thứ tự của bạn, người thực sự đã nhận được nhiều bánh nhất.
• Trong cả hai trường hợp, nếu có nhiều hơn một bạn thỏa mãn điều kiện, hãy xuất
ra bạn có ID nhỏ nhất.
Ví dụ
Input Output
10 3
3 1
24
78
69

Điểm
• 60% số điểm cho trường hợp số đầu tiên chính xác
• 40% số điểm cho trường hợp số thứ hai chính xác.

You might also like