fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define int long long
  5. #define pb push_back
  6. #define vz vector
  7. #define az auto
  8. #define fast ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
  9. #define sz string
  10. #define mz make_pair
  11. #define tz ll t; cin>>t; while(t--)
  12. #define yes cout<<"YES\n";
  13. #define no cout<<"NO\n";
  14. #define qz queue
  15. #define endl cout<<"\n";
  16. #define ff first
  17. #define ss second
  18. #define mod7 1000000007
  19. #define mod9 1000000009
  20. #define qwertyuiop cout<<"Hello\n";
  21. #define iz int n;cin>>n;vector<ll> vc(n);for(auto &x:vc)cin>>x;
  22. #define oz for(auto &x:ans) cout<<x<<" ";
  23. int mid0(int n){return ceil(n/2.0)-1;}
  24. int mid1(int n){return ceil(n/2.0);}
  25. #define fr(i,n) for(int i=0;i<n;i++)
  26. void solve()
  27. {
  28. int n;
  29. cin>>n;
  30. vz<ll> vc(n+1,0);
  31. for(int i=1;i<=n;i++)
  32. cin>>vc[i];
  33. vc.push_back(100000000);
  34. int q;
  35. cin>>q;
  36. while(q--)
  37. {
  38. int k;
  39. cin>>k;
  40. int st_indx=0;
  41. int end_indx=n+1;
  42. int ans_indx=0;
  43. int ans_indx_value=0;
  44. while(st_indx<=end_indx)
  45. {
  46. int mid_indx=st_indx+(end_indx-st_indx)/2;
  47. int missing_ele=vc[mid_indx]-mid_indx;
  48. if(missing_ele>=k)
  49. {
  50. end_indx=mid_indx-1;
  51. }
  52. else
  53. {
  54. ans_indx=mid_indx;
  55. ans_indx_value=k-missing_ele;
  56. st_indx=mid_indx+1;
  57. }
  58. }
  59. cout<<vc[ans_indx]+ans_indx_value;
  60. endl
  61. }
  62. }
  63. signed main()
  64. {
  65. fast
  66. {
  67. solve();
  68. }
  69. return 0;
  70. }
Success #stdin #stdout 0s 5404KB
stdin
5
2 3 4 7 11
3
5
1
4
stdout
9
1
8