Leaving Auction

time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

There are n people taking part in auction today. The rules of auction are classical. There were n bids made, though it's not guaranteed they were from different people. It might happen that some people made no bids at all.

Each bid is define by two integers (ai, bi), where ai is the index of the person, who made this bid and bi is its size. Bids are given in chronological order, meaning bi < bi + 1 for all i < n. Moreover, participant never makes two bids in a row (no one updates his own bid), i.e. ai ≠ ai + 1 for all i < n.

Now you are curious with the following question: who (and which bid) will win the auction if some participants were absent? Consider that if someone was absent, all his bids are just removed and no new bids are added.

Note, that if during this imaginary exclusion of some participants it happens that some of the remaining participants makes a bid twice (or more times) in a row, only first of these bids is counted. For better understanding take a look at the samples.

You have several questions in your mind, compute the answer for each of them.

Input

The first line of the input contains an integer n (1 ≤ n ≤ 200 000) — the number of participants and bids.

Each of the following n lines contains two integers ai and bi (1 ≤ ai ≤ n, 1 ≤ bi ≤ 109, bi < bi + 1) — the number of participant who made the i-th bid and the size of this bid.

Next line contains an integer q (1 ≤ q ≤ 200 000) — the number of question you have in mind.

Each of next q lines contains an integer k (1 ≤ k ≤ n), followed by k integers lj (1 ≤ lj ≤ n) — the number of people who are not coming in this question and their indices. It is guarenteed that lj values are different for a single question.

It's guaranteed that the sum of k over all question won't exceed 200 000.

Output

For each question print two integer — the index of the winner and the size of the winning bid. If there is no winner (there are no remaining bids at all), print two zeroes.

Examples
Input
  1. 6
    1 10
    2 100
    3 1000
    1 10000
    2 100000
    3 1000000
    3
    1 3
    2 2 3
    2 1 2
Output
  1. 2 100000
    1 10
    3 1000
Input
  1. 3
    1 10
    2 100
    1 1000
    2
    2 1 2
    2 2 3
Output
  1. 0 0
    1 10
Note

Consider the first sample:

  • In the first question participant number 3 is absent so the sequence of bids looks as follows:
    1. 1 10
    2. 2 100
    3. 1 10 000
    4. 2 100 000

    Participant number 2 wins with the bid 100 000.

  • In the second question participants 2 and 3 are absent, so the sequence of bids looks:
    1. 1 10
    2. 1 10 000

    The winner is, of course, participant number 1 but the winning bid is 10 instead of 10 000 as no one will ever increase his own bid (in this problem).

  • In the third question participants 1 and 2 are absent and the sequence is:
    1. 3 1 000
    2. 3 1 000 000

    The winner is participant 3 with the bid 1 000.

  • 题意:拍卖一件物品,有n个竞标,一个人可以有多个竞标。给出n个竞标,a[i],b[i].a[i]表示人的序号,b[i]表示竞标价格。接下来有q个询问,每次一个k,之后k个数表示该序号的人缺席。问谁最终以多少钱得标。如果没有输出0 0,否则输出序号和价钱。
  • 我们要按竞标价格排个序 然后删除那些缺席人 找到竞标价格第一大和第二大的  用二分找到第一大的人中投标的价格大于第二大投标的最大价格
  • 注意的是那个删除来找第一第二大的地方 用vector超时了 换成set过了
    1. #include<iostream>
    2. #include<cstdio>
    3. #include<algorithm>
    4. #include<cstring>
    5. #include<cstdlib>
    6. #include<string.h>
    7. #include<set>
    8. #include<vector>
    9. #include<queue>
    10. #include<stack>
    11. #include<map>
    12. #include<cmath>
    13. typedef long long ll;
    14. typedef unsigned long long LL;
    15. using namespace std;
    16. const double PI=acos(-1.0);
    17. const double eps=0.0000000001;
    18. const int N=+;
    19. const ll mod=1e9+;
    20. const int INF=0x3f3f3f3f;
    21. struct node{
    22. int maxx=;
    23. int pos;
    24. }a[N];
    25. int b[N];
    26. vector<int>ans[N];
    27. set<pair<int,int> >aa,bb;
    28. int maxx[N];
    29. int vis[N];
    30. int check(int x,int y){
    31. int i=ans[y].size()-;
    32. int tt=ans[y][i];
    33. int low=;
    34. int high=ans[x].size()-;
    35. int anss=ans[x][];
    36. while(low<=high){
    37. int mid=(low+high)>>;
    38. if(ans[x][mid]>=tt){
    39. high=mid-;
    40. anss=ans[x][mid];
    41. }
    42. else{
    43. low=mid+;
    44. }
    45. }
    46. return anss;
    47. }
    48. int main(){
    49. int n;
    50. int x,y;
    51. int t=;
    52. cin>>n;
    53. memset(vis,,sizeof(vis));
    54. // for(int i=0;i<=n;i++)ans[i].clear();
    55. for(int i=;i<=n;i++){
    56. scanf("%d%d",&x,&y);
    57. a[i].maxx=y;
    58. a[i].pos=x;
    59. ans[x].push_back(y);
    60. }
    61. memset(b,,sizeof(b));
    62. for(int i=n;i>=;i--){
    63. if(vis[a[i].pos]==){
    64. aa.insert(make_pair(-i,a[i].pos));
    65. vis[a[i].pos]=i;continue;
    66. }
    67.  
    68. }
    69. set<pair<int,int> >::iterator it;
    70. int q;
    71. scanf("%d",&q);
    72. //vector<int>::iterator it;
    73. while(q--){
    74. int m;
    75. scanf("%d",&m);
    76. for(int i=;i<=m;i++){
    77. scanf("%d",&x);
    78. b[i]=x;
    79. if(vis[x]==)continue;
    80. //cout<<a[vis[x]].pos<<" "<<-vis[x]<<endl;
    81. aa.erase(make_pair(-vis[x],a[vis[x]].pos));
    82. }
    83. if(aa.size()==){
    84. cout<<<<" "<<<<endl;
    85. }
    86. else if(aa.size()==){
    87. int t=aa.begin()->second;
    88. int t1=ans[t][];
    89. cout<<t<<" "<<t1<<endl;
    90. }
    91. else{
    92. int t=aa.begin()->second;
    93. int t1=(++aa.begin())->second;
    94. cout<<t<<" "<<check(t,t1)<<endl;
    95. }
    96. for(int i=;i<=m;i++){
    97. x=b[i];
    98. if(vis[x]){
    99. aa.insert(make_pair(-vis[x],a[vis[x]].pos));
    100. }
    101. }
    102. }
    103. }

cf 749D Leaving Auction的更多相关文章

  1. Codeforces 749D. Leaving Auction set+二分

    D. Leaving Auction time limit per test: 2 seconds memory limit per test:256 megabytes input:standard ...

  2. CodeForces 749D Leaving Auction

    二分查找,$set$. 对于某一次询问,如果把人删光了,那么输出$0$ $0$. 如果只剩下$1$个人,那么输出那个人喊的最低价格. 如果剩下的人数有大于等于两个, 这时最底下出现的情景必然是红色部分 ...

  3. codeforces 749D Leaving Auction(二分)

    题目链接:http://codeforces.com/problemset/problem/749/D 题意:就是类似竞拍,然后报价肯定要比上一个高,然后查询输入k个数表示那些人的竞拍无效, 输出最后 ...

  4. CF749D Leaving Auction set排序查找

    CodeForces 749D. Leaving Auction 传送门 There are n people taking part in auction today. The rules of a ...

  5. Leaving Auction

    Leaving Auction 题目链接:http://codeforces.com/contest/749/problem/D 二分 本来以为是哪种神奇的数据结构,没想到sort+lower_bon ...

  6. Leaving Auction CF 749D

    题目:http://codeforces.com/problemset/problem/749/D 题目大意: 有n个人竞拍,也有n个叫牌,一个人可以有多个叫价牌,但也可能有一些人根本不叫价 每个叫牌 ...

  7. Codeforces 749D:Leaving Auction(set+二分)

    http://codeforces.com/contest/749/problem/D 题意:有几个人在拍卖场竞价,一共有n次喊价,有q个询问,每一个询问有一个num,接下来num个人从这次拍卖中除去 ...

  8. 【codeforces 749D】Leaving Auction

    [题目链接]:http://codeforces.com/problemset/problem/749/D [题意] 有n个人在竞价; 按照时间的顺序给出n次竞价(可能有一些人没有参加竞价); 每次竞 ...

  9. Leaving Auction CodeForces - 749D (set,贪心,模拟)

    大意: 若干个人参加拍卖会, 给定每个人出价顺序, 保证价格递增, q个询问, 给出k个人的编号, 求删除这k个人的所有出价后, 最终谁赢, 他最少出价多少. set维护每个人最后一次投票的时间, 每 ...

随机推荐

  1. arx 插入图片

    #include <ShLwApi.h> #pragma comment(lib, "ShLwApi.lib") //插入影像图 Acad::ErrorStatus i ...

  2. CSS 类名的问题

    以下以数字开头的 CSS 类名不会生效: .1st{ color: red; } 一个合法的 CSS 类名必需以下面其中之一作为开头: 下划线 _ 短横线 - 字母 a-z 然后紧跟其他 _,- 数字 ...

  3. HDU4496 D-City【基础并查集】

    Problem Description Luxer is a really bad guy. He destroys everything he met.  One day Luxer went to ...

  4. MySQL各种版本的下载方式

    1.在百度上搜“MySQL”,进入官网 原文地址:https://blog.csdn.net/mieleizhi0522/article/details/79109195

  5. MySQL数据库grant授权命令

    MySQL数据库grant授权命令 制作人:全心全意 grant授权命令的使用 grant授权命令使用语法: grant 权限 on 数据库对象 to 用户 grant 权限 on 数据库对象 to ...

  6. OS X中crt中文乱码

    SecureCRT中显示乱码的话,可以去设置为UTF-8编码: Session Options->Terminal->Appearance->Character Encoding,设 ...

  7. HDU 4902 (牛叉的线段树)

    Nice boat Problem Description There is an old country and the king fell in love with a devil. The de ...

  8. Uva12657 Boxes in a Line

    题目链接:传送门 分析:每次操作都会花费大量时间,显然我们只需要关注每个元素的左边是啥,右边是啥就够了,那么用双向链表,l[i]表示i左边的数,r[i]表示i右边的数,每次操作模拟一下数组的变化就好了 ...

  9. 小a和uim之大逃离(洛谷 1373)

    题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...

  10. Bestcoder #92

    A =w= B 计数题,枚举A.C,算B.D的个数,注意减去重复的 我当时是f[1][n]->f[2][n]->f[3][n]->f[4][n]递推的 C 题意:长为n的字符串仅由' ...