//萌新第一篇题解,请多多指教
//各位小伙伴们加油
//木桶法+前缀和
//用木桶记录每一个数的个数,再用一个数组算出k的前缀和
//k的起点其实是(k的前缀和)-(k的个数)
//k的终点就是(k的前缀和)-1,(题目要求从0开始数的,所以-1)
include [HTML_REMOVED]
using namespace std;
const int N=1e5+10;
int a[N],b[10010],book[10010]; //b为第i个数的前缀和; book是木桶;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int n=0,m=0,k=0;
cin>>n>>m;
for(int i=0;i<n;i++) cin>>a[i],book[a[i]]++; //book计数,木桶法;
for(int i=1;i<=a[n-1];i++) b[i]=b[i-1]+book[i]; //算前缀和
for(int i=0;i<m;i++)
{
cin>>k;
if(book[k]==0) { cout<<"-1 -1\n"; continue; }
else cout<<b[k]-book[k]<<" "<<b[k]-1<<"\n"; //终点-1,因为题目要求从0开始计数
}
return 0;
}
作者:逐梦_22
链接:https://www.acwing.com/problem/content/discussion/content/8007/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
666