fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int maxn = 1e3+10;
  5. //no bug but runtime
  6. int main()
  7. {
  8. freopen("test.inp", "r", stdin);
  9. freopen("test.out", "w", stdout);
  10. int n, q;
  11. cin>>n>>q;
  12. vector<int> d(n+4);
  13. for(int i = 0; i<n; i++)
  14. {
  15. cin>>d[i];
  16. }
  17. //vector<int> d(n+4);
  18. pair<int, int> x[maxn];
  19. vector<int> pos(n+1);
  20.  
  21. for(int i = 0; i<n; i++)
  22. {
  23. cin>>d[i];
  24. }
  25. for(int i = 0; i<n; i++)
  26. {
  27. x[i] = make_pair(d[i] , i);
  28. }
  29.  
  30. sort(d.begin(), d.end());
  31. for(int i = 0; i<n; i++) cout<<x[i].first<<" "<<endl;
  32. for(int i = 0; i<n; i++)
  33. {
  34. int vt = x[i].second;
  35. pos[vt] = i;
  36. }
  37. //for(int c: pos) cout<<c<< " =) "<<endl;
  38. // pair<int, int>
  39. while(q--)
  40. {
  41. ///30%, 40%(bf)
  42. int u, v;
  43. cin>>u>>v;
  44. u = pos[u];
  45. v = pos[v];
  46. //y--;
  47.  
  48. //int a = d[x];
  49. //int b = d[y];
  50. //find a, b
  51.  
  52. long long l =min(x[d[u]].first, x[d[v]].first);
  53. long long r = max(x[d[u]].first, x[d[v]].first);
  54. long long mid = (l+ r)/2;
  55. int p = lower_bound(d.begin(),d.end(), mid) - d.begin();
  56. ///ktra thanh pho dau tien co so lon hon hoac bang mid
  57. long long ans = 1e6;
  58. //cout<<pos<<" =="<<endl;
  59. if(p < n)
  60. {
  61. long long dz = d[p];
  62. ans = min(ans, max(abs(d[u] - dz), abs(d[v] - dz)));
  63. }
  64. if(p - 1 >=0)
  65. {
  66. long long dz = d[p - 1];
  67. ans = min(ans, max(abs(d[u] - dz), abs(d[v] - dz)));
  68. }
  69. cout<<ans<<endl;
  70. }
  71.  
  72. return 0;
  73. }
  74.  
Success #stdin #stdout 0.01s 5324KB
stdin
Standard input is empty
stdout
Standard output is empty