/*
有序
1 2 3 3 3 4 4 4 5 5 5 5
*/
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6+5;
int n,a[N],q;
int main(){
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=q;i++){
int x;
cin>>x;
int l=1,r=n;
int ans = -1;
while(l<=r){
int mid = (l+r)/2;
if(a[mid]<x){
l = mid+1;
}
else if(a[mid]==x){
ans = mid;
r = mid-1;
}
else if(a[mid]>x){
r = mid-1;
}
}
cout<<ans<<" ";
}
return 0;
}
/*
A
B = A-c
枚举第一个B的位置 d
枚举第一个大于B的位置 e
*/
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5+5;
int n,a[N],A,B,c;
int find1(int x){
//返回第一个大于等于x的下标
int l=1,r=n,res=0;
while(l<=r){
int mid = (l+r)/2;
if(a[mid]>=x){
res = mid;
r = mid-1;
}
else l=mid+1;
}
return res;
}
int find2(int x){
//返回第一个大于x 的下标
int l=1,r=n,res=0;
while(l<=r){
int mid = (l+r)/2;
if(a[mid]>x){
res = mid;
r = mid-1;
}
else l = mid+1;
}
return res;
}
int main(){
cin>>n>>c;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+n+1);
long long res = 0;
for(int i=1;i<=n;i++){
int A = a[i],B=A-c;
res+=find2(B)-find1(B);
}
cout<<res<<endl;
return 0;
}
/*
枚举举例x 判断举例x能否放下所有的牛
如果能放下,比x大一点
如果放不下,比x小一点
*/
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
int n,a[N],m;
int check(int x){
int now = a[1];
int cnt = 1;
for(int i=2;i<=n;i++){
if(a[i]-now>=x){
now = a[i];
cnt++;
}
}
if(cnt>=m)return 1;
else return 0;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
int l=1,r=1000000000,res=-1;
while(l<=r){
int mid = (l+r)/2;
if(check(mid)){
res = mid;
l = mid+1;
}
else r = mid-1;
}
cout<<res<<endl;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
int n,k;
int a[N];
int check(int x){
//每一段切成x,能否切够k段
int cnt = 0;
for(int i=1;i<=n;i++){
cnt+=a[i]/x;
}
if(cnt>=k)return 1;
else return 0;
}
int main(){
cin>>n>>k;
long long sum = 0;
for(int i=1;i<=n;i++){
cin>>a[i];
sum+=a[i];
}
if(sum<k){
cout<<0<<endl;
return 0;
}
int l=1,r=100000000,res=-1;
while(l<=r){
int mid = (l+r)/2;
if(check(mid)){
res = mid;
l = mid+1;
}
else r= mid-1;
}
cout<<res<<endl;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 5e4+5;
int L,n,m;
int a[N];
int check(int x){
int cnt = 0;
int now = 0;
for(int i=1;i<=n;i++){
if(a[i]-now<x){
cnt++;
}
else{
now = a[i];
}
}
if(cnt<=m)return 1;
else return 0;
}
int main(){
cin>>L>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
n++;
a[n] = L;
int l=1,r=1e9,ans=-1;
while(l<=r){
int mid = (l+r)/2;
if(check(mid)){
l = mid+1;
ans = mid;
}
else r = mid-1;
}
cout<<ans<<endl;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
#define int unsigned long long
const int N = 2e5+5;
int n,s,l;
int a[N],h[N];
int check(int x){
int sum = 0;
for(int i=1;i<=n;i++){
if(h[i]+a[i]*x>=l){
sum+=h[i]+a[i]*x;
}
}
if(sum>=s)return 1;
else return 0;
}
signed main(){
cin>>n>>s>>l;
for(int i=1;i<=n;i++)cin>>h[i];
for(int i=1;i<=n;i++)cin>>a[i];
int l=0,r=1e18,ans=-1;
while(l<=r){
int mid = (l+r)/2;
if(check(mid)==1){
r = mid-1;
ans = mid;
}
else l = mid+1;
}
cout<<ans<<endl;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 5e5+5;
#define int long long
int n,A,B;
int a[N];
int check(int x){
int T = 0;
for(int i=1;i<=n;i++){
int tmp = a[i]-A*x;
if(tmp>0){
T+=ceil(double(tmp)/B);
}
}
if(T<=x)return 1;
else return 0;
}
signed main(){
cin>>n>>A>>B;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int l=0,r=5e5,ans=-1;
while(l<=r){
int mid = (l+r)/2;
if(check(mid)){
ans = mid;
r = mid-1;
}
else l = mid+1;
}
cout<<ans<<endl;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e6+5;
int n,m,a[N];
int check(int x){
int sum = 0;
for(int i=1;i<=n;i++){
if(a[i]>x)sum+=a[i]-x;
}
if(sum>=m)return 1;
else return 0;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int l=0,r=4e5,ans=-1;
while(l<=r){
int mid = (l+r)/2;
if(check(mid)){
ans = mid;
l = mid+1;
}
else r = mid-1;
}
cout<<ans<<endl;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 1e4+5;
int n,T,a[N];
int check(int x){
priority_queue<int,vector<int>,greater<int> >q;
for(int i=1;i<=x;i++){
q.push(a[i]);
}
for(int i=x+1;i<=n;i++){
int tmp = q.top();
q.pop();
q.push(a[i]+tmp);
}
int ret = 0;
while(!q.empty()){
ret = max(ret,q.top());
q.pop();
}
return ret<=T;
}
int main(){
cin>>n>>T;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int l=1,r=n,ans=-1;
while(l<=r){
int mid = (l+r)/2;
if(check(mid)){
r = mid-1;
ans = mid;
}
else l = mid+1;
}
cout<<ans<<endl;
return 0;
}