Đề bài: Trong thời gian tiến hành Đại hội thể dục thể thao, mỗi học sinh được nhận một số hiệu là một số tự nhiên. Cần sắp danh sách các học sinh tham gia Đại hội theo điểm thi đấu của họ. Tệp dữ liệu vào là XEPMASO.INP Dòng đầu tiên là số 𝑁 - số học sinh. Trên mỗi dòng tiếp theo cho mã số và điểm thi đấu của mỗi học sinh. Tất cả các số không vượt quá 105 . Tệp kết quả ra là XEPMASO.OUT đưa ra danh sách giảm dần theo thứ tự điểm thi đấu. Nếu hai học sinh cùng số điểm thì sắp tăng theo mã số. Trong tệp input cũng như tệp output, thông tin về mỗi học sinh ghi trên một dòng, mã số ghi trước, điểm thi đấu ghi sau. Ví dụ XEPMASO.INP XEPMASO.OUT 3 305 90 101 80 101 80 305 90 200 14 200 14 3 25 90 20 80 30 90 30 90 20 80 25 90 Bài 2: Sắp người xuống bè (SPOJ/CTN: PCH008) Đề bài: Các nhà thám hiểm được tập hợp trong cuộc thám hiểm đến miền Bắc cực. Họ có một chiếc bè lớn gồm N×M chiếc bè nhỏ gắn với nhau. Mỗi chiếc bè nhỏ có một sức chứa riêng, và mỗi nhà thám hiểm cũng có trọng lượng của mình. Mỗi chiếc bè nhỏ không thể chở hơn một nhà thám hiểm. Nếu sức chứa của chiếc bè nhỏ hơn trọng lượng nhà thám hiểm chọn nó thì nhà thám hiểm đó có thể bị chết đuối khi bước xuống chiếc bè nhỏ này. Người lãnh đạo cuộc thám hiểm nghĩ cách xếp bè. Hãy giúp đỡ ông ta xác định số nhiều nhất các nhà thám hiểm có thể đi. Tệp dữ liệu vào là SAPBE.INP. Dòng đầu tiên là các số N và M (1≤N, M≤40). Trong N dòng tiếp theo, mỗi dòng M số là sức chứa M bè nhỏ. Dòng thứ N+2 là số K (1≤K≤2000) là số lượng các nhà thám hiểm. Trong dòng thứ N+3 chứa K số, số thứ i trong chúng là trọng lượng nhà thám hiểm thứ i. Tất cả trọng lượng các nhà thám hiểm và sức chứa các bè không vượt quá 109. Tệp kết quả ra là SAPBE.OUT đưa ra một số là số nhiều nhất các nhà thám hiểm tham gia cuộc thám hiểm này. Ví dụ: SAPBE.INP SAPBE.OUT 32 4 5 10 75 55 6 9 5 3 5 12 10 Bài 3: Khiêu vũ (SPOJ/CTN: PCH009) Đề bài: Một làng quê có 𝑚 chàng trai đánh số từ 1 tới 𝑚 và 𝑛 cô gái đánh số từ 1 tới 𝑛. Chàng trai thứ 𝑖 có chiều cao 𝑎𝑖 (𝑖 = 1,2, … , 𝑚), cô gái thứ 𝑗 có chiều cao 𝑏𝑗 (𝑗 = 1,2, … , 𝑛). Trong một buổi khiêu vũ, người ta muốn chọn ra một số cặp nhảy. Mỗi cặp nhảy gồm đúng 1 chàng trai và 1 cô gái và trong cặp đó, chàng trai phải cao hơn cô gái. Mỗi chàng trai, cô gái trong làng không được tham gia quá 1 cặp nhảy. Yêu cầu: Tìm một số nhiều nhất các cặp nhảy thỏa mãn yêu cầu trên. Dữ liệu: Vào từ tệp văn bản DANCE.INP Dòng 1 chứa hai số nguyên dương 𝑚, 𝑛 ≤ 105 Dòng 2 chứa 𝑚 số nguyên dương 𝑎1 , 𝑎2 , … , 𝑎𝑚 (∀𝑖: 𝑎𝑖 ≤ 109 ) Dòng 3 chứa 𝑛 số nguyên dương 𝑏1 , 𝑏2 , … , 𝑏𝑛 (∀𝑗: 𝑏𝑗 ≤ 109 ) Các số trên một dòng được ghi cách nhau ít nhất một dấu cách Kết quả: Ghi ra tệp văn bản DANCE.OUT một số nguyên duy nhất là số cặp nhảy theo phương án tìm được Ví dụ DANCE.INP DANCE.OUT 32 1 123 23 45 3 1234 22145 Chú ý: Ít nhất 50% số điểm ứng với các test có 𝑚, 𝑛 ≤ 1000 Bài 4: Hình vuông Đề bài: Trên mặt phẳng với hệ tọa độ Descartes vuông góc Ο𝑥𝑦 cho 𝑛 điểm. Hãy tìm hình vuông nhỏ nhất có cạnh song song với một trong hai trục tọa độ chứa tất cả 𝑛 điểm đã cho (điểm nằm trên cạnh hình vuông cũng bị tính là chứa trong hình vuông) Dữ liệu: Vào từ tệp văn bản SQUARE.INP: Dòng 1 chứa số nguyên dương 𝑛 ≤ 105 𝑛 dòng tiếp theo, dòng thứ 𝑖 chứa hai số nguyên 𝑥𝑖 , 𝑦𝑖 là tọa độ của một điểm (𝑥𝑖 , 𝑦𝑖 ), ∀𝑖: |𝑥𝑖 |, |𝑦𝑖 | ≤ 109 Kết quả: Ghi ra tệp văn bản SQUARE.OUT một số 7 nguyên duy nhất là diện tích hình vuông tìm được 6 Ví dụ 5 SQUARE.INP SQUARE.OUT 4 3 16 3 34 2 57 1 43 0 1 2 3 4 5 6 7 Bài 5: Running Đề bài: Sau nhiều ngày học căng thẳng, thầy giáo quyết định cho 𝑁 bạn học sinh lớp Tin thi chạy với khoảng cách là 100m. Vì phải bấm giờ nên thầy đã nhờ một bạn ghi lại điểm thi chạy của 𝑁 bạn học sinh. Thầy có xem qua bảng ghi điểm và nhận thấy Minh là người về nhì. Thật không may, do sơ suất nên thầy đã làm đổ cốc trà đá lên tờ giấy ghi điểm làm nhòe hết phần kết quả. Thầy chỉ còn danh sách gồm 𝑁 bạn học sinh và số điểm của các bạn. Hãy giúp thầy tìm ra điểm Minh và hai bạn có thời gian chạy cao nhất để trao thưởng. Dữ liệu: Dòng đầu tiên chứa số nguyên dương 𝑁 (𝑁 ≥ 2) là số bạn học sinh tham gia chạy. Dòng thứ hai chứa 𝑁 số nguyên lần lượt là điểm thi chạy của 𝑁 bạn (thứ tự theo số hiệu của các bạn từ 1 đến 𝑁). Kết quả: Dòng đầu tiên xuất ra điểm của Minh, nếu không thể xác nhận được thì xuất ra "- 1". Dòng thứ hai ghi số hiệu của hai bạn có điểm cao nhất Running.inp Running.out 6 4 153344 25 5 -1 11111 12 10 4 10 3 3 3 4 10 3 4 10 3 16 Bài 6: Stamps Đề bài: Mọi người đều ghét Raymond. Anh ta là nhà sưu tầm tem lớn nhất trên thế giới và vì lẽ đó anh ta thường chế diễu tất cả các nhà sưu tầm tem khác. May thay, mọi người đều yêu Lucy và cô ta có một kế hoạch. Cô ấy bí mật hỏi bạn bè cho cô ấy mượn tem, để cô ấy có thể làm cho Raymond xấu hổ bằng cách chứng tỏ bộ sưu tầm tem của mình còn lớn hơn bộ sưu tầm tem của anh ta. Raymond rất tin tưởng vào sự tốt nhất của bộ tem của mình, cho nên anh ta luôn nói cho mọi người biết anh ta sẽ trưng bày bao nhiêu con tem. Lucy biết mình có bao nhiêu con tem và cô ta biết rằng mình cần bao nhiêu con tem nữa. Cô ấy cũng biết có bao nhiêu người bạn sẽ cho cô mượn tem và mỗi người sẽ cho mượn bao nhiêu. Nhưng cô ấy muốn mượn từ một số người bạn ít nhất có thể. Bạn hãy viết chương trình, tính giúp cô ấy cần mượn tem từ ít nhất bao nhiêu người bạn. Dữ liệu: Dòng đầu tiên của tệp vào chứa hai số nguyên s và n ngăn cách nhau bởi một dấu cách, ở đó s là số con tem tối thiểu mà Lucy cần mượn (1 <= s <= 1.000.000) và n là số người bạn sẽ cho Lucy mượn tem (1 <= n <= 10.000). Dòng thứ hai chứa n số nguyên là số tem mà mỗi người bạn sẽ cho Lucy mượn (các số nằm trong phạm vi từ 1 đến 10.000). Kết quả: Ghi ra tệp ra một số duy nhất là số người bạn ít nhất mà Lucy cần mượn tem. Trong trường hợp Lucy không mượn được số tem tối thiểu mình cần thì ghi ra tệp ra dòng thông báo “impossible”. Ví dụ: stamps.inp stamps.out 100 6 3 13 17 42 9 23 57 99 6 2 13 17 42 9 23 57 1000 3 impossible 314 159 265 Bài 7: BuyGifts (Mua quà) Đề bài: Tý là một học sinh tham dự cuộc thi Olympic Tin học quốc tế năm 2014. Do lần đầu ra nước ngoài nên bạn ấy muốn mua các món quà lưu niệm tặng các bạn ở trường. Sau những buổi thi căng thẳng, ban tổ chức dẫn các thí sinh dự thi đi tham quan danh lam thắng cảnh và những cửa hàng lưu niệm của địa phương. Sau khi đi lòng vòng Tý bước vào một cửa hàng lưu niệm bán những món quà mà bạn ấy yêu thích. Chủ cửa hàng giới thiệu cho Tý n ( 3 <= n <=105 ) món quà, món Quà thứ i (1<=i<=n) có giá ai , (1<= ai <= 109) . Tý muốn chọn mua m (1 <= m <= n ) món quà sao cho độ chênh lệch giữa giá món quà rẻ nhất và đắt nhất là tối thiểu. Vì đi chơi nên Tý không mang theo máy tính nên bạn hãy giúp bạn ấy tính xem có thể mua các món quà với độ chênh lệch nhỏ nhất. Dữ liệu: từ tệp văn bản BUYGIFTS.INP có cấu trúc như sau: Dòng 1: ghi hai số nguyên dương n và m. Dòng 2: Ghi ghi n số nguyên lần lượt là a1,a2,L, an. Các số trên cùng một dòng cách nhau một dấu cách Kết quả: ghi ra tệp BUYGIFTS.OUT gồm một số nguyên dương là độ lệch tối thiểu. Ví dụ: BUYGIFTS.INP BUYGIFTS.INP Giải thích 64 5 Tý có thể mua các món quà có giá trị: 10 12 10 5 7 22 10, 12, 10, 7.
Bài 8: Tham quan
Đề bài: Trong đợt tổ chức đi tham quan danh lam thắng cảnh của thành phố Hồ Chí Minh, Ban tổ chức hội thi Tin học trẻ tổ chức cho N đoàn (đánh số từ 1 đến N) mỗi đoàn đi tham quan một địa điểm khác nhau. Đoàn thứ i đi tham quan địa điểm cách Khách sạn Hoàng Đế di km (i=1,2,...,n). Hội thi có M xe taxi đánh số từ 1 đến M (MN). Xe thứ j có mức tiêu thụ xăng là v lít/km. Yêu cầu: Hãy chọn N xe để phục vụ việc đưa các đoàn đi tham quan sao cho tổng chi phí xăng cần sử dụng là ít nhất. Dữ liệu: Vào từ tệp văn bản THAMQUAN.INP Dòng đầu tiên chứa hai số nguyên dương N, M (1N,M30000) Tiếp theo là N dòng, dòng thứ i ghi số nguyên di (1di30000) Cuối cùng là M dòng, dòng thứ j ghi vj (1vj30000) Kết quả: Ghi ra tệp văn bản THAMQUAN.OUT: Dòng đầu tiên ghi tổng lượng xăng cần dùng cho việc đưa các đoàn đi tham quan (không tính lượt về) Dòng thứ i trong số N dòng tiếp theo ghi chỉ số xe phục vụ đoàn i (i=1,2,...,N) Ví dụ: THAMQUAN.INP THAMQUAN.OUT 34 256 7 2 5 3 9 4 17 13 15 10 Bài 9: Tổng đoạn thẳng Đề bài: Cho n (n ≤ 10000) đoạn thẳng trên trục số với các điểm đầu xi và độ dài di (|xi|, di là những số nguyên không vượt quá 109). Tính tổng độ dài trên trục số bị phủ bởi n đoạn trên. Ví dụ: Có 3 đoạn x1=-5, d1=10; x2=0, d2=6; x3=-100, d3=10 thì tổng độ dài trên trục số bị phủ bởi 3 đoạn trên là 21. Dữ liệu: từ tệp văn bản TONGDD.INP có cấu trúc như sau: Dòng 1: chứa số nguyên dương n (1≤n ≤ 10000). Dòng thứ i trong n dòng tiếp theo ghi tọa độ điểm đầu và độ dài của đoạn thẳng thứ i (các số cách nhau một dấu cách) Kết quả: Ghi ra tệp văn bản TONGDD.OUT: ghi tổng độ dài trên trục số bị phủ bởi n đoạn thẳng đã cho. Ví dụ: TONGDD.INP TONGDD.OUT 3 21 -5 10 06 -100 10
Bài 9: Tổng đoạn thẳng
Đề bài: Cho n (n ≤ 10000) đoạn thẳng trên trục số với các điểm đầu xi và độ dài di (|xi|, di là những số nguyên không vượt quá 109). Tính tổng độ dài trên trục số bị phủ bởi n đoạn trên. Ví dụ: Có 3 đoạn x1=-5, d1=10; x2=0, d2=6; x3=-100, d3=10 thì tổng độ dài trên trục số bị phủ bởi 3 đoạn trên là 21. Dữ liệu: từ tệp văn bản TONGDD.INP có cấu trúc như sau: Dòng 1: chứa số nguyên dương n (1≤n ≤ 10000). Dòng thứ i trong n dòng tiếp theo ghi tọa độ điểm đầu và độ dài của đoạn thẳng thứ i (các số cách nhau một dấu cách) Kết quả: Ghi ra tệp văn bản TONGDD.OUT: ghi tổng độ dài trên trục số bị phủ bởi n đoạn thẳng đã cho. Ví dụ: TONGDD.INP TONGDD.OUT 3 21 -5 10 06 -100 10 Bài 10: Numjoin (Ghép số) Đề bài: Cho n số nguyên dương a1, a2, …, an (1 < n ≤ 100), mỗi số không vượt quá 109. Từ các số này, người ta tạo ra một số nguyên mới bằng cách ghép tất cả các số đã cho, tức là viết liên tiếp các số đã cho với nhau. Ví dụ, với n = 4 và các số 123, 124, 56, 90 ta có thể tạo ra các số mới sau: 1231245690, 1241235690, 5612312490, … Có thể dễ dàng thấy rằng, với n = 4, ta có thể tạo ra 24 số mới. Trong trường hợp này, số lớn nhất có thể tạo ra là 9056124123. Yêu cầu: Cho n và các số a1, a2, …, an. Hãy xác định số lớn nhất có thể tạo ra khi ghép các số đã cho thành một số mới. Dữ liệu: Tệp văn bản NUMJOIN.INP có dạng: Dòng thứ nhất chứa số nguyên n; Dòng thứ hai chứa n số nguyên a1, a2, …, an. Kết quả: Tệp văn bản NUMJOIN.OUT gồm một dòng là số lớn nhất có thể tạo ra khi ghép các số đã cho thành một số mới. Ví dụ: NUMJOIN.INP NUMJOIN.OUT 4 9056124123 123 124 56 90 Bài 11: Sumzero (Tổng bằng 0) Đề bài: Cho dãy gồm N (N ≤ 10000) số a1, a2, …, an. Hãy tìm dãy con liên tiếp dài nhất có tổng bằng 0 (|ai| ≤ 109) Ví dụ, dãy gồm 5 số 2, 1, -2, 3, -2 thì dãy con liên tiếp dài nhất có tổng bằng 0 là: 1, - 2, 3, -2 Dữ liệu: Tệp SUMZERO.INP có dạng Dòng đầu là số nguyên N Dòng tiếp theo gồm N số cách nhau bởi dấu cách. Kết quả: Tệp SUMZERO.OUT chứa các số có tổng bằng 0 cần tìm. Nếu không tìm thấy ghi -1. Ví dụ: SUMZERO.INP SUMZERO.OUT 5 1 -2 3 -2 2 1 -2 3 -2 Bài 12: DSN (Dãy số) Đề bài: Cho N (N ≤ 10000) đoạn số nguyên [ai, bi] (|ai|, |bi| ≤ 109), hãy tìm một số mà số đó thuộc nhiều đoạn số nguyên nhất. Ví dụ, có 5 đoạn [0,10], [2,3], [4,7], [3,5], [5,8], ta chọn số 5 thuộc 4 đoạn [0,10], [4,7], [3,5], [5,8]. Dữ liệu: Tệp DSN.INP có dạng Dòng đầu là số nguyên N N dòng tiếp theo, mỗi dòng i ghi hai số nguyên ai và bi Kết quả: Tệp DSN.OUT chứa số thuộc nhiều đoạn số nguyên nhất. Ví dụ: DSN.INP DSN.OUT 5 5 0 10 23 47 35 58 Bài 13: Aggressive cows (Nhốt bò) Đề bài: Nông dân John có một trang trại với N cái cọc. Các cọc này được đặt trên một đường thẳng ở các vị trí x1, x2, …, xn. Trang trại này có C con bò. Những con bò này không thích những chiếc cọc cho lắm. Chúng trở nên hung dữ khi bị buộc vào những chiếc cọc. Để tránh việc các con bò làm đau nhau, nông dân John muốn đặt mỗi con bò vào một cái cọc, sao cho khoảng cách nhỏ nhất giữa hai con bò bất kì là lớn nhất. Hãy tìm giá trị lớn nhất này. Dữ liệu: Dòng đầu tiên gồm hai số nguyên dương N và C (2 ≤ C ≤ N ≤ 100000). N dòng tiếp theo, mỗi dòng chứa một số nguyên xi mô tả vị trí của một cây cọc (0 ≤ xi ≤ 109). Kết quả: In ra giá trị lớn nhất của khoảng cách nhỏ nhất giữa hai con bò bất kì. Ví dụ: Aggressivecows.inp Aggressivecows.out 53 3 1 2 8 4 9 Giải thích ví dụ: Nông dân John có thể đặt các con bò vào các vị trí 1, 4 và 8, khi đó, khoảng cách bé nhất giữa hai con bò bất kì là 3. Bài 14: Wedding (Dự tiệc) Đề bài: HD chuẩn bị tổ chức một bữa tiệc tại nhà. Tại nhà mình, HD có n chiếc thìa và m chiếc dĩa. HD muốn sắp xếp thìa và dĩa sao cho thật đẹp, theo HD cách bố trí đẹp là thìa ở giữa, bên trái là chiếc dĩa có độ dài nhỏ hơn, bên phải là chiếc dĩa có độ dài lớn hơn. Yêu cầu: Hãy cho biết HD có thể mời tối đa được bao nhiêu khách, biết rằng mỗi người khách sẽ sử dụng 1 bộ thìa và 2 dĩa ở 2 bên? Dữ liệu: WEDDING.INP Dòng 1: N và M Dòng 2: N số nguyên а1, а2… аn là độ dài của n chiếc thìa. Dòng 3: M số nguyên b1, b2, … bm là độ dài của m chiếc dĩa. Kết quả: WEDDING.OUT 1 số duy nhất là số khách tối đa HD có thể mời dự tiệc. Hạn chế: 1 ≤ 𝑁, 𝑀 ≤ 100.000 0 ≤ 𝑎𝑖 , 𝑏𝑗 ≤ 1.000.000.000 Ví dụ: WEDDING.INP WEDDING.OUT 44 2 3413 2170