CF166D.Shoe Store

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

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

The shop has mm customers who came at the same time. The customer number ii has did_{i} money and the size of his feet equals lil_{i} . The customer number ii can buy the pair number jj , if cj<=dic_{j}<=d_{i} , and also if li=sjl_{i}=s_{j} or li=sj1l_{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 11 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 cjc_{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.

输入格式

The first input line contains the only integer nn ( 1<=n<=1051<=n<=10^{5} ) — the number of shoe pairs in the warehouse. Then nn lines contain the descriptions of pairs of shoes as two integers cic_{i} and sis_{i} ( 1<=ci,si<=1091<=c_{i},s_{i}<=10^{9} ), the numbers are separated by a space. It is guaranteed that all numbers sis_{i} are different.

The next line contains an integer mm ( 1<=m<=1051<=m<=10^{5} ) — the number of customers in the shop. Next mm lines contain the customers' descriptions as two integers did_{i} and lil_{i} ( 1<=di,li<=1091<=d_{i},l_{i}<=10^{9} ), the numbers are separated by a space.

输出格式

In the first line print the only integer — the maximum profit you can get from selling shoes. In the second line print an integer kk — the number of shoe pairs you will sell. In the following kk 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 11 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.

输入输出样例

  • 输入#1

    3
    10 1
    30 2
    20 3
    2
    20 1
    20 2
    

    输出#1

    30
    2
    2 3
    1 1
    
  • 输入#2

    3
    10 4
    20 5
    30 6
    2
    70 4
    50 5
    

    输出#2

    50
    2
    2 3
    1 2
    
首页