fork(1) download
  1. #include <bits/stdc++.h>
  2. #define lb lower_bound
  3. #define pii pair<ll,ll>
  4. #define fi first
  5.  
  6. #define ll long long
  7. #define se second
  8. #define ios ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
  9. #define op freopen
  10. #define sz size
  11. #define TXT "test"
  12. #define freo if(fopen(TXT".inp","r")){op(TXT".inp","r",stdin);op(TXT".out","w",stdout);}
  13.  
  14. using namespace std;
  15.  
  16. ll n, m, k, a[100005], b[100005];
  17. ll rmq[100005][18], lg[100005];
  18.  
  19. void setup()
  20. {
  21. lg[1] = 0;
  22. for (ll i = 2; i <= n; ++i)
  23. {
  24. lg[i] = lg[i / 2] + 1;
  25. }
  26. for (ll i = 1; i <= n; ++i)
  27. {
  28. rmq[i][0] = a[i];
  29. }
  30. for (ll j = 1; (1 << j) <= n; ++j)
  31. {
  32. for (ll i = 1; i + (1 << j) - 1 <= n; ++i)
  33. {
  34. rmq[i][j] = min(rmq[i][j - 1], rmq[i + (1 << (j - 1))][j - 1]);
  35. }
  36. }
  37. }
  38.  
  39. ll query(ll l, ll r)
  40. {
  41. ll j = lg[r - l + 1];
  42. return min(rmq[l][j], rmq[r - (1 << j) + 1][j]);
  43. }
  44. main()
  45. {
  46. ios;
  47. freo;
  48. cin >> n >> m >> k;
  49. for (ll i = 1; i <= n; ++i)
  50. cin >> a[i];
  51. for (ll i = 1; i <= m; ++i)
  52. cin >> b[i];
  53. sort(b + 1, b + 1 + m);
  54. for (ll i = 1; i <= n; ++i)
  55. {
  56. ll id = lb(b + 1, b + 1 + m, a[i])-b;
  57. ll c=INT_MAX;
  58. if(id<m)
  59. c=min(c,abs(a[i]-b[id]));
  60. if(id>0)
  61. c=min(c,abs(a[i]-b[id-1]));
  62. a[i]=c;
  63.  
  64. }
  65. setup();
  66. while (k--)
  67. {
  68. ll l, r;
  69. cin >> l >> r;
  70. cout << query(l, r) << "\n";
  71. }
  72. }
  73.  
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
Standard output is empty