Thứ Sáu, 1 tháng 7, 2016

XẾP HÀNG

Hàng ngày khi lấy sữa, N con bò của bác John (1 ≤ N ≤ 50000) luôn xếp hàng theo thứ tự không đổi. Một hôm bác John quyết định tổ chức một trò chơi cho một số con bò. Để đơn giản, bác John sẽ chọn ra một đoạn liên tiếp các con bò để tham dự trò chơi. Tuy nhiên để trò chơi diễn ra vui vẻ, các con bò phải không quá chênh lệch về chiều cao.
Bác John đã chuẩn bị một danh sách gồm Q (1 ≤ Q ≤ 200000) đoạn các con bò và chiều cao của chúng (trong phạm vi [1, 1000000]). Với mỗi đoạn, bác John muốn xác định chênh lệch chiều cao giữa con bò thấp nhất và cao nhất. Bạn hãy giúp bác John thực hiện công việc này!
Dữ liệu vào:
+ Dòng đầu tiên chứa 2 số nguyên N và Q.
+ Dòng thứ i trong số N dòng sau chứa 1 số nguyên duy nhất, là độ cao của con bò thứ i.
+ Dòng thứ i trong số Q trong tiếp theo chứa 2 số nguyên A, B (1 ≤ A ≤ B ≤ N), cho biết đoạn các con bò từ A đến B.
Dữ liệu ra:
Gồm Q dòng, mỗi dòng chứa 1 số nguyên, là chênh lệch chiều cao giữa con bò thấp nhất và cao nhất thuộc đoạn tương ứng.
Ví dụ:
Input
Output
6 3
1
7
3
4
2
5
1 5
4 6
2 2
6
3
0


Risk - 567uva

Risk is a board game in which several opposing players attempt to conquer the world. The gameboard consists of a world map broken up into hypothetical countries. During a player’s turn, armies stationed in one country are only allowed to attack only countries with which they share a common border. Upon conquest of that country, the armies may move into the newly conquered country.
During the course of play, a player often engages in a sequence of conquests with the goal of transferring a large mass of armies from some starting country to a destination country. Typically, one chooses the intervening countries so as to minimize the total number of countries that need to be conquered. Given a description of the gameboard with 20 countries each with between 1 and 19 connections to other countries, your task is to write a function that takes a starting country and a destination country and computes the minimum number of countries that must be conquered to reach the destination. You do not need to output the sequence of countries, just the number of countries to be conquered including the destination. For example, if starting and destination countries are neighbors, then your program should return one.
The following connection diagram illustrates the first sample input.


Input
Input to your program will consist of a series of country configuration test sets. Each test set will consist of a board description on lines 1 through 19. The representation avoids listing every national boundary twice by only listing the fact that country I borders country J when I < J. Thus, the I-th line, where I is less than 20, contains an integer X indicating how many “higher-numbered” countries share borders with country I, then X distinct integers J greater than I and not exceeding 20, each describing a boundary between countries I and J. Line 20 of the test set contains a single integer (1 ≤ N ≤ 100) indicating the number of country pairs that follow. The next N lines each contain exactly two integers (1 ≤ A, B ≤ 20; A ̸= B) indicating the starting and ending countries for a possible conquest.
There can be multiple test sets in the input file; your program should continue reading and processing until reaching the end of file. There will be at least one path between any two given countries in every country configuration.
Output
For each input set, your program should print the following message ‘Test Set #T’ where T is the number of the test set starting with 1 (left-justified starting in column 11). The next NT lines each will contain the result for the corresponding test in the test set — that is,
the minimum number of countries to conquer. The test result line should contain the start country Universidad de Valladolid OJ: 567 – Risk 2/3 code A right-justified in columns 1 and 2; the string ‘ to ’ in columns 3 to 6; the destination country code B right-justified in columns 7 and 8; the string ‘: ’ in columns 9 and 10; and a single integer indicating the minimum number of moves required to traverse from country A to country B in the test set left-justified starting in column 11. Following all result lines of each input set, your program should print a single blank line.
Sample Input
Sample Output
1 3
2 3 4
3 4 5 6
1 6
1 7
2 12 13
1 8
2 9 10
1 11
1 11
2 12 17
1 14
2 14 15
2 15 16
1 16
1 19
2 18 19
1 20
1 20
5
1 20
2 9
19 5
18 19
16 20
4 2 3 5 6
1 4
3 4 10 5
5 10 11 12 19 18
2 6 7
2 7 8
2 9 10
1 9
1 10
2 11 14
3 12 13 14
3 18 17 13
4 14 15 16 17
000
2 18 20
1 19
1 20
6
1 20
8 20
15 16
11 4
7 13
2 16
Test Set #1
1 to 20: 7
2 to 9: 5
19 to 5: 6
18 to 19: 2
16 to 20: 2

Test Set #2
1 to 20: 4
8 to 20: 5
15 to 16: 2
11 to 4: 1
7 to 13: 3
2 to 16: 4

Tóm tắt đề:
Dữ liệu vào:
Gồm nhiều bộ test, mỗi bộ test trong input là một đồ thị và t yêu cầu có cấu trúc:
+ 19 dòng đầu tiên mô tả đồ thị theo danh sách kề với dòng thứ i bắt đầu là số nguyên k cho biết số lượng các đỉnh kề với i, k số tiếp theo trên dòng i cho biết các đỉnh kề của đỉnh i.
+ dòng tiếp theo là số nguyên t cho biết số lượng các yêu cầu
+ t dòng tiếp theo mỗi dòng là một yêu cầu gồm 2 số u và v cách nhau một ký tự trắng cho biết cần phải tìm độ dài đường đi ngắn nhất giữa hai đỉnh u và v
Dữ liệu ra:
Tương ứng với mỗi Testcase in ra dòng thông báo: “‘Test Set #T”  với T là số thứ tự của bộ test. Tiếp theo gồm nhiều dòng mỗi dòng có cấu trúc “u to v: val” cho biết độ dài đường đi ngắn nhất giữa đỉnh u và v là val.

Giữa 2 Testcase cách nhau 1 dòng

Thứ Năm, 30 tháng 6, 2016

CẮT HÌNH

Cho một bảng số A gồm M dòng, N cột, các giá trị của bảng A chỉ là 0 hoặc 1. Ta muốn cắt bảng A thành các hình chữ nhật con sao cho các hình chữ nhật có có giá trị toàn bằng 0 hoặc bằng 1. Mỗi lần cắt là một nhát cắt thẳng theo dòng hoặc theo cột của một hình chữ nhật thành hai hình chữ nhật riêng biệt. Cứ tiếp tục cắt cho đến khi hình chữ nhật có các giá trị toàn bằng 1 hoặc toàn bằng 0. Hãy tìm cách cắt để số hình chữ nhật con nhận được, có giá trị toàn băng 0 hoặc toàn bằng 1, là nhỏ nhất.
Ví dụ, bảng số 5x5 sau được chia thành 8 hình chữ nhật con.

0
1
0
0
1

0
1
0
0
1
0
1
0
0
1

0
1
0
0
1
1
1
0
0
1

1
1
0
0
1
1
1
1
0
0

1
1
1
0
0
0
0
1
0
0

0
0
1
0
0
Dữ liệu vào: từ tệp văn bản HCN2. INP
+ Dòng đầu tiên là hai số nguyên dương M và N (M, N≤30)
+ M dòng tiếp theo mỗi dòng gồm N đô chỉ gồm 0 hoặc 1 thể hiện bảng số A
Dữ liệu ra: Ghi vào tệp văn bản HCN2.OUT gồm một dòng duy nhất chứa một số là số lượng hình chữ nhật ít nhất
Ví dụ:
HCN2.INP
HCN2.OUT
5 5
0 1 0 0 1
0 1 0 0 1
1 1 0 0 1
1 1 1 0 0
0 0 1 0 0
8


CẮT HÌNH

Có một hình chữ nhật MxN ô, mỗi lần ta được phép cắt một hình chữ nhật thành hai hình chữ nhật con theo chiều ngang hoặc chiều dọc và lại tiếp tục cắt các hình chữ nhật con cho đến khi được hình vuông thi dừng.
Yêu cầu: Tìm cách cắt hình chữ nhật MxN thành ít hình vuông nhất.
Dữ liệu vào: từ tệp văn bản HCN1.INP
Gồm một dòng chứa hai số M, N (1≤M,N≤500)
Dữ liệu ra: ghi vào tệp HCN1.OUT
Gồm một dòng là kết quả số lượng hình vuông ít nhất.

HCN1.INP
HCN1.OUT
10 2
5
5 6
5


Thứ Tư, 29 tháng 6, 2016

Amr and Music

Amr is a young coder who likes music a lot. He always wanted to learn how to play music but he was busy coding so he got an idea.
Amr has n instruments, it takes ai days to learn i-th instrument. Being busy, Amr dedicated k days to learn how to play the maximum possible number of instruments.
Amr asked for your help to distribute his free days between instruments so that he can achieve his goal.
Input
The first line contains two numbers nk (1 ≤ n ≤ 1000 ≤ k ≤ 10 000), the number of instruments and number of days respectively.
The second line contains n integers ai (1 ≤ ai ≤ 100), representing number of days required to learn the i-th instrument.
Output
In the first line output one integer m representing the maximum number of instruments Amr can learn.
In the second line output m space-separated integers: the indices of instruments to be learnt. You may output indices in any order.
if there are multiple optimal solutions output any. It is not necessary to use all days for studying.
Examples
Input
Output

Input
Output

Input
Output
4 10
4 3 1 2
4
1 2 3 4


5 6
4 3 1 1 2
3
1 3 4

1 4
0
Note
In the first test Amr can learn all 4 instruments.
In the second test other possible solutions are: {2, 3, 5} or {3, 4, 5}.
In the third test Amr doesn't have enough time to learn the only presented instrument.
Tóm tắt đề:

Amr có k ngày rảnh. Anh ta có n bài nhạc. Bài nhạc thứ i cần a[i] ngày để luyện tập. Hỏi Amr có thể luyện tập được tối đa bao nhiêu bài nhạc ?

LineLand Mail

All cities of Lineland are located on the Ox coordinate axis. Thus, each city is associated with its position xi — a coordinate on the Oxaxis. No two cities are located at a single point.
Lineland residents love to send letters to each other. A person may send a letter only if the recipient lives in another city (because if they live in the same city, then it is easier to drop in).
Strange but true, the cost of sending the letter is exactly equal to the distance between the sender's city and the recipient's city.
For each city calculate two values ​​mini and maxi, where mini is the minimum cost of sending a letter from the i-th city to some other city, and maxi is the the maximum cost of sending a letter from the i-th city to some other city
Input
The first line of the input contains integer n (2 ≤ n ≤ 105) — the number of cities in Lineland. The second line contains the sequence ofn distinct integers x1, x2, ..., xn ( - 109 ≤ xi ≤ 109), where xi is the x-coordinate of the i-th city. All the xi's are distinct and follow inascending order.
Output
Print n lines, the i-th line must contain two integers mini, maxi, separated by a space, where mini is the minimum cost of sending a letter from the i-th city, and maxi is the maximum cost of sending a letter from the i-th city.
Examples
Input
Output

Input
Output
4
-5 -2 2 7
3 12
3 9
4 7
5 12

2
-1 1
2 2
2 2
Tóm tắt đề :
Có N thành phố nằm trên tia Ox. Thành phố thứ i có tọa độ là xi.

Với mỗi thành phố thứ i, in ra Min[i] và Max[i] tương ứng là khoảng cách nhỏ nhất và lớn nhất từ thành phố i so với các thành phố còn lại.