牛牛的期末考试
牛牛的期末考试
https://ac.nowcoder.com/acm/contest/9799/B
include<bits/stdc++.h>
using namespace std;
vector<vector<int> >v;//排序感觉更方便
int n,q,allp,x;
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>allp;
vector<int>t;
for(int j=0;j<allp;j++)
{
cin>>x;
t.push_back(x);
}
v.push_back(t);
sort(v[i].begin(),v[i].end());//每个班的成绩从小到大排序,以便用二分查找
}
cin>>q;
while(q--)
{
int L,R,K,P,diwei=0;
cin>>L>>R>>K>>P;
int value=v[K-1][v[K-1].size()-P];//成绩从小到大,最后一名即是成绩最高的
for(int i=L-1;i<=R-1;i++)
{
int num=upper_bound(v[i].begin(),v[i].end(),value)-v[i].begin();//分数相同时自己排在前面,则对于第L班到第R班中查找第一个大于自己成绩的人那么后面所有人的成绩都大于自己
diwei+=v[i].size()-num;//名次累加
}
cout<<diwei+1<<endl;//加上自己的名次
}
return 0;
}</int></int>