Advertisement
sidjha57

beautiful_arry

Jul 9th, 2022
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. long long find_max (vector<long long>& arr, int len) {
  4. for (int i=32; i>=0; i--) {
  5. vector<long long> new_arr;
  6. int freq = 0;
  7. for (int j=0; j<arr.size();j++) {
  8. if ((arr[j]>>i)&1) new_arr.push_back(arr[j]);
  9. }
  10. if (new_arr.size() >= len) arr = new_arr;
  11. }
  12.  
  13. long long ans = arr[0];
  14. for (int i=1; i<len;i++) ans &= arr[i];
  15. return ans;
  16. }
  17. vector<long long> solve (int n, int m, vector<int>& a, vector<vector<int>>& q) {
  18. vector<vector<long long>> sum (n+1);
  19. vector<long long> pre(n+1,0),ans, arr;
  20. for (int i=0; i<n;i++) {
  21. pre[i+1] += a[i] + pre[i];
  22. }
  23. for (int i=0; i<=n;i++) {
  24. for (int j =i+1; j <= n; j++) {
  25. sum[(j-i)].push_back((pre[j]-pre[i]));
  26. }
  27. }
  28.  
  29. for (int i=0; i<m; i++) {
  30. int siz = q[i][0], len = q[i][1], x = q[i][2];
  31. arr = sum[siz];
  32. long long mx = find_max(arr,len);
  33. ans.push_back((x|mx));
  34. }
  35. return ans;
  36. }
  37.  
  38. int main() {
  39.  
  40. ios::sync_with_stdio(0);
  41. cin.tie(0);
  42. int N;
  43. cin >> N;
  44. int M;
  45. cin >> M;
  46. vector<int> A(N);
  47. for(int i_A = 0; i_A < N; i_A++)
  48. {
  49. cin >> A[i_A];
  50. }
  51. vector<vector<int> > Q(M, vector<int>(3));
  52. for (int i_Q = 0; i_Q < M; i_Q++)
  53. {
  54. for(int j_Q = 0; j_Q < 3; j_Q++)
  55. {
  56. cin >> Q[i_Q][j_Q];
  57. }
  58. }
  59.  
  60. vector<long long> out_;
  61. out_ = solve(N, M, A, Q);
  62. cout << out_[0];
  63. for(int i_out_ = 1; i_out_ < out_.size(); i_out_++)
  64. {
  65. cout << " " << out_[i_out_];
  66. }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement