Codeforces Round 113 (Div. 2)
D
Shoe Store
Codeforces
2500
原题
← CE →
翻译中…

The warehouse in your shop has $*n*$ shoe pairs. Each pair is characterized by two integers: its price $*c*_{*i*}$ and its size $*s*_{*i*}$. We know that on this very day all numbers $*s*_{*i*}$ are different, that is, there is no more than one pair of each size.

翻译中…

The shop has $*m*$ customers who came at the same time. The customer number $*i*$ has $*d*_{*i*}$ money and the size of his feet equals $*l*_{*i*}$. The customer number $*i*$ can buy the pair number $*j*$, if $*c*_{*j*} ≤ *d*_{*i*}$, and also if $*l*_{*i*} = *s*_{*j*}$ or $*l*_{*i*} = *s*_{*j*} - 1$; that is, it is necessary that he has enough money to pay for the shoes. It is also necessary that the size of his feet equals to or is less by $1$ than the size of the shoes he chooses.

翻译中…

Your task is to sell some customers pairs of shoes (a pair per person) so as to maximize the sum of the sold pairs $*c*_{*j*}$ that is, the profit. It is guaranteed that each customer buys no more than one pair and each pair will be bought by no more than one customer.

翻译中…

Input

翻译中…

The first input line contains the only integer $*n*$ ($1 ≤ *n* ≤ 10^{5}$) — the number of shoe pairs in the warehouse. Then $*n*$ lines contain the descriptions of pairs of shoes as two integers $*c*_{*i*}$ and $*s*_{*i*}$ ($1 ≤ *c*_{*i*}, *s*_{*i*} ≤ 10^{9}$), the numbers are separated by a space. It is guaranteed that all numbers $*s*_{*i*}$ are different.

翻译中…

The next line contains an integer $*m*$ ($1 ≤ *m* ≤ 10^{5}$) — the number of customers in the shop. Next $*m*$ lines contain the customers' descriptions as two integers $*d*_{*i*}$ and $*l*_{*i*}$ ($1 ≤ *d*_{*i*}, *l*_{*i*} ≤ 10^{9}$), the numbers are separated by a space.

翻译中…

Output

翻译中…

In the first line print the only integer — the maximum profit you can get from selling shoes. In the second line print an integer $*k*$ — the number of shoe pairs you will sell. In the following $*k*$ lines print the descriptions of the sold pairs — two space-separated integers where the first number is the customer's number and the second number is the number of the shoes the customer will buy.

翻译中…

You can print pairs of numbers "the customer's number and the shoes' number" in any order, the customers and the pairs of shoes are numbered starting from $1$ in the order in which they are given in the input. If there are several optimal answers, you are allowed to print any of them.

翻译中…

Please do not use the %lld specificator to read or write 64-bit numbers in С++. It is preferred to use the cin, cout streams or the %I64d specificator instead.

翻译中…

样例

Input #1
3
10 1
30 2
20 3
2
20 1
20 2
Output #1
30
2
2 3
1 1
InputCopy OutputCopy
Input #2
3
10 4
20 5
30 6
2
70 4
50 5
Output #2
50
2
2 3
1 2
InputCopy OutputCopy
题目信息
题号
166D
时间限制
2 s
内存限制
256 MB
标签
动态规划
图匹配
贪心
排序
双指针

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。