jayati

First negative integer in every window of size k

Oct 9th, 2023
1,392
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.77 KB | None | 0 0
  1. //{ Driver Code Starts
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. vector<long long> printFirstNegativeInteger(long long int arr[],
  6.                                              long long int n, long long int k);
  7.  
  8. // Driver program to test above functions
  9. int main() {
  10.     long long int t, i;
  11.     cin >> t;
  12.     while (t--) {
  13.         long long int n;
  14.         cin >> n;
  15.         long long int arr[n];
  16.         for (i = 0; i < n; i++) {
  17.             cin >> arr[i];
  18.         }
  19.         long long int k;
  20.         cin >> k;
  21.  
  22.         vector<long long> ans = printFirstNegativeInteger(arr, n, k);
  23.         for (auto it : ans) cout << it << " ";
  24.         cout << endl;
  25.     }
  26.     return 0;
  27. }
  28.  
  29. // } Driver Code Ends
  30.  
  31.  
  32. vector<long long> printFirstNegativeInteger(long long int A[],
  33.                                              long long int N, long long int K) {
  34.                                                  
  35.         vector<long long> ans;
  36.         deque<long long int> dq;
  37.        
  38.         for(int i=0;i<K;i++)
  39.         {
  40.            if(A[i]<0)
  41.            {
  42.                dq.push_back(i);
  43.            }
  44.         }
  45.         if(dq.size()>0)
  46.         {
  47.             ans.push_back(A[dq.front()]);
  48.         }
  49.         else
  50.         {
  51.             ans.push_back(0);
  52.         }
  53.        
  54.         for(int i=K;i<N;i++)
  55.         {
  56.             if(!dq.empty() && i-dq.front() >=K )
  57.             {
  58.                 dq.pop_front();
  59.             }
  60.            
  61.             if(A[i]<0)
  62.             {
  63.                 dq.push_back(i);
  64.             }
  65.              if(dq.size()>0)
  66.             {
  67.                 ans.push_back(A[dq.front()]);
  68.             }
  69.             else
  70.             {
  71.                 ans.push_back(0);
  72.             }
  73.            
  74.         }
  75.         return ans;
  76.        
  77.  }
Advertisement
Add Comment
Please, Sign In to add comment