Advertisement
Guest User

Untitled

a guest
Dec 7th, 2019
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.59 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #include <ext/pb_ds/assoc_container.hpp>
  3. #include <ext/pb_ds/tree_policy.hpp>
  4.  
  5. using namespace std;
  6. using namespace __gnu_pbds;
  7. typedef tree<int, null_type, less<int>, rb_tree_tag,tree_order_statistics_node_update> ordered_set;
  8.  
  9. #define scan(x) do{while((x=getchar())<'0'); for(x-='0'; '0'<=(_=getchar()); x=(x<<3)+(x<<1)+_-'0');}while(0)
  10. char _;
  11. #define complete_unique(a) a.erase(unique(a.begin(),a.end()),a.end())
  12. #define all(a) a.begin(),a.end()
  13. #define println printf("\n");
  14. #define readln(x) getline(cin,x);
  15. #define pb push_back
  16. #define endl "\n"
  17. #define INT_INF 0x3f3f3f3f
  18. #define LL_INF 0x3f3f3f3f3f3f3f3f
  19. #define MOD 1000000007
  20. #define MOD2 1494318097
  21. #define SEED 131
  22. #define mp make_pair
  23. #define fastio cin.tie(0); cin.sync_with_stdio(0);
  24.  
  25. #define MAXP 205
  26. #define MAXN 100005
  27.  
  28. typedef unsigned long long ull;
  29. typedef long long ll;
  30. typedef long double ld;
  31. typedef unordered_map<int,int> umii;
  32. typedef pair<int,int> pii;
  33. typedef pair<double,double> pdd;
  34. typedef pair<ll,ll> pll;
  35. typedef pair<int,pii> triple;
  36. typedef int8_t byte;
  37.  
  38. mt19937 g1(chrono::steady_clock::now().time_since_epoch().count());
  39.  
  40. int randint(int a, int b){return uniform_int_distribution<int>(a, b)(g1);}
  41. ll randlong(ll a,ll b){return uniform_int_distribution<long long>(a, b)(g1);}
  42.  
  43. ll gcd(ll a, ll b){return b == 0 ? a : gcd(b, a % b);}
  44. ll lcm(ll a, ll b){return a*b/gcd(a,b);}
  45. ll fpow(ll b, ll exp, ll mod){if(exp == 0) return 1;ll t = fpow(b,exp/2,mod);if(exp&1) return t*t%mod*b%mod;return t*t%mod;}
  46. ll divmod(ll i, ll j, ll mod){i%=mod,j%=mod;return i*fpow(j,mod-2,mod)%mod;}
  47.  
  48. int sz,num_q,R[MAXN],C[MAXN];
  49. int rows[MAXP][MAXN],cols[MAXP][MAXN];
  50. vector<int> v;
  51.  
  52. inline bool isp(int n){
  53. for(int i=2; i<=sqrt(n); i++)
  54. if(n%i == 0)
  55. return false;
  56. return true;
  57. }
  58.  
  59. inline int maxpr(int row, int c1, int c2){
  60. int ans = -1;
  61. for(int i=0; i<v.size(); i++){
  62. if(R[row]%v[i] == 0) ans = v[i];
  63. if(cols[i][c2]-cols[i][c1-1] == c2-c1+1) ans = v[i];
  64. }
  65. return ans;
  66. }
  67.  
  68. inline int maxpc(int col, int r1, int r2){
  69. int ans = -1;
  70. for(int i=0; i<v.size(); i++){
  71. if(C[col]%v[i] == 0) ans = v[i];
  72. if(rows[i][r2]-rows[i][r1-1] == r2-r1+1) ans = v[i];
  73. }
  74. return ans;
  75. }
  76.  
  77. int main(){
  78. scanf("%d %d",&sz,&num_q);
  79. for(int i=2; i<=1000; i++)
  80. if(isp(i)) v.pb(i);
  81. for(int i=1; i<=sz; i++)
  82. scanf(" %d",&R[i]);
  83. for(int i=1; i<=sz; i++)
  84. scanf(" %d",&C[i]);
  85. for(int i=0; i<v.size(); i++){
  86. for(int k=1; k<=sz; k++){
  87. rows[i][k] = rows[i][k-1];
  88. cols[i][k] = cols[i][k-1];
  89. if(R[k]%v[i] == 0) rows[i][k]++;
  90. if(C[k]%v[i] == 0) cols[i][k]++;
  91. }
  92. }
  93. while(num_q--){
  94. int r1,c1,r2,c2; scanf(" %d %d %d %d",&r1,&c1,&r2,&c2);
  95. if(r1 == r2) printf("%d\n",maxpr(r1,c1,c2));
  96. else if(c1 == c2) printf("%d\n",maxpc(c1,r1,r2));
  97. else{
  98. int ans = -1;
  99. for(int i=0; i<v.size(); i++){
  100. if(R[r1]%v[i] == 0 && R[r2]%v[i] == 0 && cols[i][c2]-cols[i][c1-1]) ans = v[i];
  101. if(C[c1]%v[i] == 0 && C[c2]%v[i] == 0 && rows[i][r2]-rows[i][r1-1]) ans = v[i];
  102.  
  103. if(C[c2]%v[i] == 0 && R[r1]%v[i] == 0) ans = v[i];
  104. if(C[c1]%v[i] == 0 && R[r2]%v[i] == 0) ans = v[i];
  105.  
  106. if(cols[i][c2]-cols[i][c1-1] == c2-c1+1) ans = v[i];
  107. if(rows[i][r2]-rows[i][r1-1] == r2-r1+1) ans = v[i];
  108. }
  109. printf("%d\n",ans);
  110. }
  111. }
  112. }
  113. /*
  114. 3 1
  115. 2 2 2
  116. 3 3 3
  117. 1 1 3 3
  118. ans=3
  119. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement