You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.4 KiB
C++
50 lines
1.4 KiB
C++
#include <cstdio>
|
|
#include <cstring>
|
|
#include <set>
|
|
#include <algorithm>
|
|
#include <vector>
|
|
using namespace std;
|
|
const int N=200005;
|
|
int pmax[N],pmin[N],e[N];
|
|
vector<int> P[N];
|
|
|
|
int main()
|
|
{
|
|
memset(pmin,0x3f3f3f3f,sizeof(pmin));
|
|
int n,q,k;
|
|
scanf("%d",&n);
|
|
for(int i=0,p,x; i<n; i++)
|
|
scanf("%d%d",&p,&x),
|
|
P[p].push_back(x),
|
|
pmax[p]=max(pmax[p],x),
|
|
pmin[p]=min(pmin[p],x);
|
|
set<pair<int,int>> s;
|
|
for(int i=1; i<=n; i++)
|
|
if(P[i].size())
|
|
s.insert(make_pair(pmax[i],i));
|
|
scanf("%d",&q);
|
|
while(q--)
|
|
{
|
|
scanf("%d",&k);
|
|
for(int i=0; i<k; i++)
|
|
scanf("%d",e+i);
|
|
for(int i=0; i<k; i++)
|
|
s.erase(make_pair(pmax[e[i]],e[i]));
|
|
if(s.empty())
|
|
puts("0 0");
|
|
else if(s.size()==1)
|
|
printf("%d %d\n",s.begin()->second,pmin[s.begin()->second]);
|
|
else
|
|
{
|
|
set<pair<int,int>>::reverse_iterator ite=s.rbegin();
|
|
pair<int,int> p1=*(ite++);
|
|
pair<int,int> p2=*(ite++);
|
|
printf("%d %d\n",p1.second,*upper_bound(P[p1.second].begin(), P[p1.second].end(), p2.first));
|
|
}
|
|
for(int i=0; i<k; i++)
|
|
if(P[e[i]].size())
|
|
s.insert(make_pair(pmax[e[i]],e[i]));
|
|
}
|
|
return 0;
|
|
}
|