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++

#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;
}