Codeforces 749D Leaving Auction binary search+data structures
来源:互联网 发布:金融数据库软件 编辑:程序博客网 时间:2024/06/06 19:19
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.
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.
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.
61 102 1003 10001 100002 1000003 100000031 32 2 32 1 2
2 1000001 103 1000
31 102 1001 100022 1 22 2 3
0 01 10
Consider the first sample:
- In the first question participant number 3 is absent so the sequence of bids looks as follows:
- 1 10
- 2 100
- 1 10 000
- 2 100 000
- In the second question participants 2 and 3 are absent, so the sequence of bids looks:
- 1 10
- 1 10 000
- In the third question participants 1 and 2 are absent and the sequence is:
- 3 1 000
- 3 1 000 000
#include <cstdio> #include <algorithm>#include <vector>#include <iostream>#define N 200005using namespace std;vector<int> c[N];int Max[N];int b[N];int a[N];int ban[N];int num;int n,i,j;int k,v,q;int m1,m2;int cmp(int l,int r){return Max[l]>Max[r];}int main(){scanf("%d",&n);for (i=0;i<n;i++){scanf("%d%d",&k,&v);c[k].push_back(v);Max[k]=v;//the maxnum of peopleb[k]=k;//if there is no people ,the value is zero}sort(b+1,b+n+1,cmp);//sort the people as the maxnumscanf("%d",&q);for (i=0;i<q;i++){m1=m2=0;scanf("%d",&k);for (j=1;j<=k;j++) {scanf("%d",&a[j]); ban[a[j]]=1;}for (j=1;j<=n;j++){if (b[j]==0) break;if (ban[b[j]]) continue;if (m1==0) m1=b[j];else {m2=b[j]; break;}}if (m1==0)//there is no answer{printf("0 0\n");}else if (m2==0){ //there is just one people.printf("%d %d\n",m1,c[m1][0]);}else {// the is tow people ,use the lower_boundint p=lower_bound(c[m1].begin(),c[m1].end(),Max[m2])-c[m1].begin();printf("%d %d\n",m1,c[m1][p]);}for (j=1;j<=k;j++) ban[a[j]]=0;}}
- Codeforces 749D Leaving Auction binary search+data structures
- Codeforces 749D Leaving Auction 二分+Set
- Codeforces 754D Fedor and coupons binary search, data structures, greedy, sortings
- Codeforces Round #388 (Div. 2)D. Leaving Auction
- Codeforces Round #388 (Div. 2)D. Leaving Auction
- Codeforces Round #388 (Div. 2)D. Leaving Auction(水题呀?)
- [Codeforces #388D Leaving Auction] 线段树+二分
- Codeforces Round #388 (Div. 2) D. Leaving Auction
- Codeforces Round #388 (Div. 2)-D. Leaving Auction
- Codeforces Round #388 (Div. 2)D Leaving Auction
- Codeforces Round #388 (Div. 2)D. Leaving Auction
- Codeforces Round #388(Div. 2)D. Leaving Auction【二分+思维】好题~
- Codeforces Round #388 (Div. 2)D. Leaving Auction(二分+思维)
- [Javascript Data Structures] 二分查找 Binary Search
- 【Data Structures】 3. ArrayList and Binary Search
- codeforce 749 D. Leaving Auction 拍卖 (set+二分) 思维题!!!
- Data Structures (Weiss) Chapter 4: Binary Search Tree C++
- Codeforces Round #378 (Div. 2) D. Kostya the Sculptor __ data structures、map<ii, priority_queue<ii>>
- Hololens官方教程精简版 - 07. Spatial mapping(空间映射)
- Tesseract-OCR引擎安装
- Linux 中文乱码问题
- MultiDex与热修复实现原理(二)MultiDex基本原理及解析
- Qt实现推拉效果
- Codeforces 749D Leaving Auction binary search+data structures
- XX-Net使用:使用Chrome浏览器(二)
- LeetCode 320. Generalized Abbreviation
- 使用Policy文件来设置Java的安全策略
- 图解Sysprep封装系统
- matlab实现DPCM编码和游长编码
- photoshop-反相&调整颜色
- 解惑:教你在 Arch Linux 终端上更改 WiFi 密码
- 《疯狂Java讲义(第三版)》学习笔记之 —— 1.3 Java运行机制 && 1.5 第一个Java程序