diff --git a/algos/range_queries/PrefixSum/soln/Sujal/b_reverse_sort.cpp b/algos/range_queries/PrefixSum/soln/Sujal/b_reverse_sort.cpp new file mode 100644 index 0000000..53ff766 --- /dev/null +++ b/algos/range_queries/PrefixSum/soln/Sujal/b_reverse_sort.cpp @@ -0,0 +1,51 @@ +//PROBLEM STATEMENT- https://codeforces.com/problemset/problem/1605/B + +//SUBMISSION LINK- https://codeforces.com/problemset/submission/1605/356028420 + +//APPROACH- For every gap, check the ones on left and zeroes on right using prefix and suffix sums +// if at any point, they are equal(and non zero), they can be swapped +//TIME COMPLEXITY- O(n*n) +//SPACE COMPLEXITY- O(n*n) + + + + +#include +using namespace std; + +void solve(){ + int n;cin>>n; + string s;cin>>s; + if(n==1){cout<<0<<"\n";return;} + + vector> L(n-1),R(n-1); + + if(s[0]=='1')L[0].push_back(0); + for(int i=1;i0;i--){ + R[i-1]=R[i]; + if(s[i]=='0')R[i-1].push_back(i); + } + + for(int i=0;i>t; + while(t--)solve(); +} diff --git a/algos/range_queries/PrefixSum/soln/Sujal/tracking_segments.cpp b/algos/range_queries/PrefixSum/soln/Sujal/tracking_segments.cpp new file mode 100644 index 0000000..f80b661 --- /dev/null +++ b/algos/range_queries/PrefixSum/soln/Sujal/tracking_segments.cpp @@ -0,0 +1,53 @@ +//PROBLEM STATEMENT- https://codeforces.com/problemset/problem/1843/E + +//SUBMISSION LINK- https://codeforces.com/problemset/submission/1843/356028549 + + +//APPROACH- Standard binary search on queries as they are monotonues (F F F T T TT) +//TIME COMPLEXITY- O(nlogn) +//SPACE COMPLEXITY- O(n) + + + + +#include +using namespace std; + +bool ok(vector>&seg,vector&q,int mid,int n){ + vectora(n,0); + for(int i=0;ipre(n+1,0); + for(int i=0;i(p.second-p.first+1)/2) + return true; + } + return false; +} + +void solve(){ + int n,m;cin>>n>>m; + vector>seg(m); + for(int i=0;i>seg[i].first>>seg[i].second; + + int qn;cin>>qn; + vectorq(qn); + for(int i=0;i>q[i]; + + int l=1,r=qn,ans=-1; + while(l<=r){ + int mid=(l+r)/2; + if(ok(seg,q,mid,n)){ + ans=mid; + r=mid-1; + }else l=mid+1; + } + cout<>t; + while(t--)solve(); +}