#include<bits/stdc++.h>
using namespace std;
//UPPER BOUND OF ANY NUMBER IS A NUMBER WHICH IS CLOSER TO TARGET BUT GREATER NOT SMALLER
int UPPERBOUND(const vector<int>&v,int k){
int n=v.size();
int l=0,r=n-1,ans=n;
while(l<=r){
int mid=l+(r-l)/2;
if(v[mid]>k){
ans=mid;
r=mid-1;
}else{
l=mid+1;
}
}
return ans;
}
int main(){
cout<<"Enter Size of the array-";
int n;cin>>n;cout<<endl;
cout<<"Enter elements in asending order"<<endl;
vector<int>v(n);
for(int i=0;i<n;i++)cin>>v[i];
cout<<"Enter Target value- ";int t;cin>>t;cout<<endl;
int a=UPPERBOUND(v,t);
cout<<"Index:"<<a<<endl;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLy9VUFBFUiBCT1VORCBPRiBBTlkgTlVNQkVSIElTIEEgTlVNQkVSIFdISUNIIElTIENMT1NFUiBUTyBUQVJHRVQgQlVUIEdSRUFURVIgTk9UIFNNQUxMRVIKaW50IFVQUEVSQk9VTkQoY29uc3QgdmVjdG9yPGludD4mdixpbnQgayl7CiAgICBpbnQgbj12LnNpemUoKTsKICAgIGludCBsPTAscj1uLTEsYW5zPW47CgogICAgd2hpbGUobDw9cil7CiAgICAgICAgaW50IG1pZD1sKyhyLWwpLzI7CiAgICAgICAgaWYodlttaWRdPmspewogICAgICAgICAgICBhbnM9bWlkOwogICAgICAgICAgICByPW1pZC0xOwogICAgICAgIH1lbHNlewogICAgICAgICAgICBsPW1pZCsxOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBhbnM7Cn0KaW50IG1haW4oKXsKICAgIGNvdXQ8PCJFbnRlciBTaXplIG9mIHRoZSBhcnJheS0iOwogICAgaW50IG47Y2luPj5uO2NvdXQ8PGVuZGw7CiAgICBjb3V0PDwiRW50ZXIgZWxlbWVudHMgaW4gYXNlbmRpbmcgb3JkZXIiPDxlbmRsOwogICAgdmVjdG9yPGludD52KG4pOwogICAgZm9yKGludCBpPTA7aTxuO2krKyljaW4+PnZbaV07CiAgICBjb3V0PDwiRW50ZXIgVGFyZ2V0IHZhbHVlLSAiO2ludCB0O2Npbj4+dDtjb3V0PDxlbmRsOwogICAgaW50IGE9VVBQRVJCT1VORCh2LHQpOwogICAgY291dDw8IkluZGV4OiI8PGE8PGVuZGw7CiAgICAKfQ==