rahulgoel's blog

By rahulgoel, history, 6 weeks ago,

1691A - Beat The Odds

Video Editorial
Idea: amul_agrawal
Problem Setting: menavlikar.rutvij JadeReaper rahulgoel amul_agrawal
Editorial: menavlikar.rutvij rahulgoel
Video Editorial: rahulgoel

Hint 1
Hint 2
Solution
C++ Code

1691B - Shoe Shuffling

Video Editorial
Idea: amul_agrawal
Editorial: menavlikar.rutvij rahulgoel

Hint 1
Hint 2
Solution
C++ Code

1691C - Sum of Substrings

Video Editorial
Idea: amul_agrawal
Problem Setting: rahulgoel amul_agrawal
Editorial: amul_agrawal rahulgoel
Video Editorial: amul_agrawal

Hint 1
Hint 2
Solution
C++ Code

1691D - Max GEQ Sum

Video Editorial
Idea: amul_agrawal
Problem Setting: fangahawk amul_agrawal rahulgoel keyurchd_11
Editorial: fangahawk rahulgoel
Video Editorial: fangahawk

Hint 1
Hint 2
Solution
C++ Code

1691E - Number of Groups

Video Editorial
Idea: amul_agrawal
Problem Setting: akcube keyurchd_11 rahulgoel amul_agrawal
Editorial: akcube rahulgoel keyurchd_11
Video Editorial: akcube

Hint 1
Hint 2
Hint 3
Solution
C++ Code

darkkcyan's solution without using sets in python.

Python code

TheScrasse's $nlog^3n$ solution for E using Boruvka and Mergesort tree :D

Code

1691F - K-Set Tree

Video Editorial
Idea: ltc.groverkss
Problem Setting: ltc.groverkss amul_agrawal rahulgoel
Editorial: rahulgoel
Video Editorial: rahulgoel

Hint 1
Hint 2
Hint 3
Solution
C++ Code

• +141

 » 5 weeks ago, # |   0 It was a very nice contest.
•  » » 5 weeks ago, # ^ |   +3 here's my python DP O(n) solution for D O(n) DP solution for D
•  » » » 5 weeks ago, # ^ |   0 An even more simple o(n) solution for D
•  » » » » 5 weeks ago, # ^ |   0 Can you explain how this works? It looks much simpler than what i did. Also, how did you get this thought process.
•  » » » » 5 weeks ago, # ^ |   +29 hey your code is giving "yes" for the input 10 -6 1 1 -6 10 but answer for this case should be "no"week testcases !!!!Testers please look
•  » » » » » 5 weeks ago, # ^ | ← Rev. 2 →   0 I tried something like sliding window but seems the testcases are weak hence it passed.
•  » » » » » » 5 weeks ago, # ^ |   +2 yes many other participants also did similar thing and their submission is passed in system testing.
•  » » » » » » » 5 weeks ago, # ^ |   +1 I also saw some submissions with O(n*n) complexity, but still accepted very weak test cases.
•  » » » » 3 weeks ago, # ^ |   0 It gives WA when using this algo
•  » » 3 weeks ago, # ^ |   0 My friends solution for D O(N), a <= the input array prefix_a <= prefix sum a[0] + ... + a[i] = prefix_a[i]a_ngt <= next greater value pre_ngt <= next greater valuenow for i in 0 to n-1, if pre_ngt[i] < a_ngt[i] return false;why because for subarray starting at index i and ending at pre_ngt[i], will have max value a[i] and a[i+1] + ... a[pre_ngt[i]] >0, since pre_ngt[i] is the index where prefix_a[ ngt] > prefix[i].Then just reverse the main array A and apply the same check. You can check his implementation over 159050281.
•  » » » 2 weeks ago, # ^ |   0 Hey! Can we do this: 1. Find the next greater element's index for all the elements 2. Find the previous greater element's index for all the elements 3. Store the prefix sum for all the prefixes. 4. Traverse from index i = 0 to n, suppose that a[i] is the max. Then the subarray from index prev_greater + 1 till next_greater-1 will be the subarray in which we need to check. So, for this subarray, the subarray sum will be x = prefix[next_greater-1] — prefix[prev_greater]. So, then we can compare if a[i]>=x or not. Is this logic correct? I submitted this but giving WA on the 364th case of test case 2. Please let me know what's wrong. Thanks in advance!
 » 5 weeks ago, # |   -155 What F*ckhead created problem C ?
•  » » 5 weeks ago, # ^ |   +29 First of all, that language is not ok in a public forum. Secondly, accounts of setters are given with each problem.
•  » » 5 weeks ago, # ^ |   +6 says the guy who only solves A and B in contests (NO OFFENCE)
•  » » 5 weeks ago, # ^ |   +12 A very smart guy.
•  » » 5 weeks ago, # ^ |   0 I was really panicking when I saw no error in my C, but just after the contest I saw the test case finally and I mishandled the case with only single '1'. Really such problems test our patience, but you can use it to improve your temperament.
 » 5 weeks ago, # |   +4 I think problem E can be solved using segment tree, is that right?
•  » » 5 weeks ago, # ^ |   +5 Yes
•  » » 5 weeks ago, # ^ |   +15 Yes, the thing you can do is pretty similar to my solution. If two segments [l1; r1], [l2; r2] do intersect, it means that either: l2 <= l1 <= r2 l2 <= r1 <= r2 l1 <= l2 <= r2 <= r1 Lets forget about the third case for a moment. We take, for example, red segments. Then we make two arrays. One of them stores right ends of red segments. Another one stores left ends. We sort the arrays.Then we iterate through blue segments [l; r] and for each we find all the right ends l <= r1 <= r and all the left ends l <= l1 <= r. It's obvious that all the l1s make a continuous segment in left ends array. The same thing works for the right ends. That means that we can find the smallest l1 (r1) and the greatest one. Then we want to unite all the segments between them and the blue segment we are looking at. Using the seg tree, we will mark whether the segment should be united with the previous one in left (right) ends order.Back for the third case, it's obvious that l1 <= l2 <= r2 <= r1 also means that l1 <= l2 <= r1. So to count all the intersections from the third case, you basically just need to use the solution above two times with different colors.P.S. The part with the seg tree can be done easily without it. Our task is to add on some segments and then find the modified array. There is a nice trick to do it. We will count difference array d[]. To increase by x on segment [l; r], we need to add x to d[l] and substract x from d[r + 1]. Then, after we applied all the operations, to get the modified array we simply need to calc prefix sums on this array.My solution:159060471
•  » » » 5 weeks ago, # ^ |   +1 The same idea came to my mind during the contest, unfortunately, time wasn't on my side.Thank you so much for the explanation.
 » 5 weeks ago, # |   +24 With video editorials and hints for each problem. You cannot argue that these are not one of the best editorials to be seen in a while on CF.
 » 5 weeks ago, # | ← Rev. 2 →   +23 D admits an O(n) solution. It is sufficient to check that the sums of the subarrays between any positive integer and the next/previous greater (or equal) integer, are negative and greater in absolute value than the positive integer itself. If this holds for all positive integers, then we return yes. Intuitively this makes sure that no positive integer can contribute positively to some other positive integer which is greater than it.
•  » » 5 weeks ago, # ^ |   +6 word
•  » » 5 weeks ago, # ^ |   0 Hi, i think i have done something similar. don't know whats wrong https://codeforces.com/contest/1691/submission/159059179
•  » » » 5 weeks ago, # ^ |   0 Failing testcase: Ticket 9160
•  » » 5 weeks ago, # ^ | ← Rev. 2 →   +13 I try to prove your solution. (edit: earlier proof was wrong)Suppose a subarray which violate the condition be $a[i:k]$ and let the index of maximum element in this subarray $i$. Also let us say wlog, that the subarray extends towards the right, ie, $[a_i, a_{i+1}, ... a_{k}]$. Let us say that the element just smaller than $a_i$ be at index $j$ in this subarray.$[a_i, \color{red}{ a_{i+1}, a_{i+2} ... }, \color{turquoise}{ a_j,} \color{blue} {a_{j+1}, a_{j+2}...a_{k}}]$If the sum of blue subarray, ie, $a[j+1:k]$ is positive, then, we find new subarray which violates the condition to be $a[j:k]$ of the same structure as $a[i:k]$ and repeat the process on this subarrayOtherwise if sum of $a[j+1: k]$ is not positive, then we safely discard this subarray, and here we end up with $a[i:j]$ as violating subarray, which we check in your solution. (because if $a[i+1:k]$ is positive and $a[j+1:k]$ is non positive then $a[i+1:j]$ is positive)it it correct or there is some flaw
•  » » » 5 weeks ago, # ^ |   0 The way I verified it myself before writing it was very similar; I also tried to demonstrate that you can safely chop off the sides and condense the violating subarray to one which is sandwiched between these two particular elements.I think it is sound.
•  » » » 5 weeks ago, # ^ |   0 That's wrong proof bro. You are saying if sum of blue array will be positive then you'll have a smaller subarray violating this condition. You're totally wrong here.Case: 2, -1, 1, -1, 2[0,4] is the smallest one. [2,4] has sum > 0 but it is not the smallest.
•  » » » » 5 weeks ago, # ^ |   0 blue subarray was just to the right of second smallest element, in this case it would be empty.Earlier proof was wrong but this was not the issue, please check now
•  » » 5 weeks ago, # ^ |   0 How do you find the "nearest" greater element than $a_i$ for each $i$ in linear time?
•  » » » 5 weeks ago, # ^ |   +3 Its a very famous stack problem bro. https://youtu.be/NXOOYYwpbg4
•  » » 5 weeks ago, # ^ |   0 10 -4 3 -4 10 should be "NO" and your solution will give "YES" if I understand correctly
•  » » » 5 weeks ago, # ^ |   0 Edited my comment to say we search for nearest greater than or equal integer, not strictly greater. Doing that, between 10 and 10 we have-4+3-4 is not less than -10, hence allowing the 10 to connect with the other 10 positively, violating the condition and giving us a NO.
 » 5 weeks ago, # |   0 can the person who added the binary search tag for D, share his approach?
•  » » 5 weeks ago, # ^ |   0 I think, in segment tree you use some kind of binary search, and intended solution for D uses segment trees :)
•  » » 5 weeks ago, # ^ |   +13 You can find closest greater on right/left using the binary search and some data structure like segment tree or sparse table.
 » 5 weeks ago, # |   0 It was nice round! I really liked problem D, I hope to see more similar problems in future rounds :)
 » 5 weeks ago, # |   +8 The best way of editorial. Loved it!
 » 5 weeks ago, # | ← Rev. 5 →   0 Editorials with hints are the best :):)
 » 5 weeks ago, # |   +15 If you are/were getting a WA/RE verdict on problems from this contest, you can get the smallest possible counter example for your submission on cfstress.com. To do that, click on the relevant problem's link below, add your submission ID, and edit the table (or edit compressed parameters) to increase/decrease the constraints. If you are not able to find a counter example even after changing the parameters, reply to this thread (only till the next 7 days), with links to your submission and ticket(s).
•  » » » 5 weeks ago, # ^ |   0 Sure, take a look at Ticket 9649 for a simple counter example.
•  » » » » 5 weeks ago, # ^ |   0 Thanks a lot
•  » » 4 weeks ago, # ^ |   0 Can you please help me find where I am wrong in problem D 159462704. Thank you
•  » » » 4 weeks ago, # ^ |   0 Sure, take a look at Ticket 10434 which contains an array of length 3 with all negative numbers. Naturally it'd satisfy the conditions, but your code prints NO.
•  » » » » 4 weeks ago, # ^ |   0 Thank you very much
 » 5 weeks ago, # |   +3 here's my python DP O(n) solution for D O(n) DP solution for D
•  » » 5 weeks ago, # ^ |   0 Explain please
 » 5 weeks ago, # | ← Rev. 2 →   +8 HI boys Can anyone explain why am I getting a Runtime Error here 159082911
•  » » 5 weeks ago, # ^ |   0 For n == 1 you're not taking the input array (a single element) which is becoming n for next inputs which is causing RTE.
•  » » » 5 weeks ago, # ^ |   0 Thanks a lot
 » 5 weeks ago, # |   0 In problem c I didn't get how all middle ones contribute to 11?? Can anyone help with this
•  » » 5 weeks ago, # ^ |   0 Ohh i think si-1.si -->Di-1 si.si+1 -->Di[Si-1*10 + (Si ]+ [ 10*Si) + Si+1] --> Si-1*10 + Si+1 + Si(11) Total contribution is 11 Got it
•  » » 5 weeks ago, # ^ |   0 The ones that are not at the extreme positions are counted once at ones position and counted once at tens position. For example in 10101 the middle "1" is a part of two numbers s2s3 (01) and s3s4(10) so this one has an overall contribution of 11.
 » 5 weeks ago, # |   0 great contest and solutions too!!
 » 5 weeks ago, # | ← Rev. 2 →   0 x
•  » » 5 weeks ago, # ^ |   +15 Sorry but your solution is hacked.
 » 5 weeks ago, # |   -6 D was doable with a classic algorithm called cses. So you maintain a segtree which returns the maximum subarray sum of the entire array. You insert the values in in increasing order of arr[i]. At every stage, if the maximum subarray sum is > the value inserted, the answer is NO, otherwise it is YES. Let's say the current value inserted is x. Since the values are inserted in increasing order, the maximum value in the entire array cannot exceed x, so the maximum subarray sum will be greater than any possible "max value of a subarray" if it is greater than x.
 » 5 weeks ago, # |   +2 Can anyone tell the time complexity of this code? That code seems to be O(n^2), but this code got accepted in problem D . Please check. Submission link: https://codeforces.com/contest/1691/submission/159084501
•  » » 5 weeks ago, # ^ |   +4 The tests in problem D are weak. Actually for the worst case it works in O(n^2) and it is hacked now.
 » 5 weeks ago, # |   0 What is the 1213th case in the 7th test of D? I am getting WA. Here is my submission.I will be really obliged if someone finds the error. Thanks in advance.
•  » » 5 weeks ago, # ^ |   +16 Failing testcase: Ticket 9078
•  » » » 5 weeks ago, # ^ |   0 Thanks a lot.
 » 5 weeks ago, # |   0 I am getting a run time error on my submission can anyone chech why that is https://codeforces.com/contest/1691/submission/159039369 thanks in advance!!
•  » » 5 weeks ago, # ^ |   +1 Here's a testcase on which your code gets WA: Ticket 9111. Not sure if it contains the reason for RE as well, but it should be a good starting point.
 » 5 weeks ago, # |   0 Thank you so much for this great contest.PS: i think that there is a typo in the last statement of the solution of problem C,i believe it's 11 not 10.*** The remaining 1s can stay where they are as they will anyways be contributing a value of 10 no matter which position they take.
 » 5 weeks ago, # |   0 Really liked the editorial with hints, and video solutions make this editorial to next level. Thanks for such a great editorial
 » 5 weeks ago, # |   +113 There is another solution of F. It is simiral to editorial, but a bit shorter. We can fix a root of the sub-tree $v$, then for each edge $e$ between $v$ and $u$ let's calculate $\sum\limits_{R \in subtree_u} \sum\limits_{S \subseteq V, |S| = k}f(R, S) = (cnt(v) - {size_u \choose k}) * (n - size_u) * size_u$where $subtree_u$ — vertexes if the sub-tree of $u$ if $v$ is the root of the tree, and $w$ is connected to $v$. $size_u$ is a number of roots of the tree, $n - size_u$ is size of the sub-tree, $cnt(v) - {size_u \choose k}$ is a number of subsets of size $k$ such that sub-tree of $v$ is the minimum-size sub-tree covering it entirely and $R \in subtree_u$
 » 5 weeks ago, # |   0 The remaining 1s can stay where they are as they will anyways be contributing a value of 10 no matter which position they take.There should be 11 instead of 10 in the above sentence.
•  » » 5 weeks ago, # ^ |   +8 Thanks! The editorial is fixed. Please wait a little bit for it to reload.
 » 5 weeks ago, # |   0 Isn't Hint 2 of problem D Editorial of no use at all?
 » 5 weeks ago, # |   0 Thanks for the fast editorial as well as making this round, enjoyed it a lot!!!
 » 5 weeks ago, # |   0 Was C that hard to implement ? I wonder my approach is correct or not My C submission
 » 5 weeks ago, # |   0 where are video editorials?
•  » » 5 weeks ago, # ^ |   0 Their links are under the title of each problem.
•  » » » 5 weeks ago, # ^ |   0 Video link is not there .. can you give here please
•  » » » » 5 weeks ago, # ^ |   0 Click Video Editorial letters.Or link.
•  » » » » » 5 weeks ago, # ^ |   0 thanks bro
 » 5 weeks ago, # |   0 The corner case of n=1 in B !! Did anyone else mess this up also xD
 » 5 weeks ago, # |   0 Haha video Editorial！I like it!
 » 5 weeks ago, # |   0 I do not get it, is there some more hidden edgecase in C?Why my 159111480 fails?
•  » » 5 weeks ago, # ^ | ← Rev. 2 →   +3 for this test case your code is failing test case : 16 2001000answer is 10 but your code is giving 11 which we will get by shifting 1 to leftmost point
•  » » » 5 weeks ago, # ^ |   0 tnx
 » 5 weeks ago, # |   +11 Problem D can be solved in $O(n)$ operations, in a quite straight-forward manner with a monotonic stack, without any special consideration for positive/negative values, etc: 159111942.
•  » » 5 weeks ago, # ^ | ← Rev. 2 →   0 similar with mine. I stored maximum range sum on the left and right side of each i with monotonic stack, and check if it is larger than 0. 159026276
 » 5 weeks ago, # |   +19 A solution for problem E using only vectors:First, consider the segments that are completely inside another segment of the same color. Let's call these "islands".If an island intersects with any segment of the other color, we can completely ignore it — because any connection chain involving the island can use the bigger segment instead. If the island does NOT intersect with any segment of the other color, then it is its own connected component — so it contributes 1 to the answer but can otherwise be ignored.Processing the islands can be done with sorting and the two-pointer technique (or binary search).Now, for the rest of the segments. Sort the segments of each color separately (note: since we got rid of the islands, sorting by left endpoint is the same as sorting by right). Now, go left to right, keeping track of the rightmost point reached with each color. If it's possible to intersect the next interval of either color with this point, do so. Otherwise add 1 to the result.
 » 5 weeks ago, # |   0 Wrong answer in 4957th token, what's the testcase? 159113795
•  » » 5 weeks ago, # ^ |   +3 Don't know about that testcase but this your solution will fail on many testcases. Example152 -1 1 -1 2Answer should be "NO" but your code will output "YES"
•  » » » 5 weeks ago, # ^ |   0 damn, thx bro
 » 5 weeks ago, # |   0 Add the problem ratings please.
 » 5 weeks ago, # | ← Rev. 2 →   0 Someone, please tell me why I am getting TLE on B My Solution on test case 30. I think it is just O(n).
•  » » 5 weeks ago, # ^ |   0 never use unordered map in cf contests. i've just changed unordered_map to a simple map in your code. got AC. 159119935 for more details refer : blog
 » 5 weeks ago, # | ← Rev. 2 →   -15 C and B good problems
 » 5 weeks ago, # |   0 This was a really nice round. And thank you for adding hints in the editorial.
 » 5 weeks ago, # |   0 liked the contest. no stories. clear problem statements.
 » 5 weeks ago, # |   +26 For E we can also run dfs and extract edges using segtree/merge sort tree.
 » 5 weeks ago, # |   0 Problem C : Can Someone Explain Me why my code failedWrong Answer on test 3 (33 number differ) 159060194
•  » » 5 weeks ago, # ^ |   0 got it : ) not mistake in logic but mistake in code found
 » 5 weeks ago, # |   0 For problem B, can anyone tell me why I am getting TLE on this 159020121 when I submit using GNU G++ 17 7.3.0 but the same solution gets accepted when I submit using GNU G++ 14 6.4.0 (159121654)
 » 5 weeks ago, # |   0 In problem 1691E — Number of Groups, I implement using the way as editorial did First using a set for ordering the points (159130522) gets WA Then I tried to change it by using a vector (159131112) gets AC Why is the set solution getting WA while the vector solution getting AC where I used the same custom comparator in both submissions?
•  » » 5 weeks ago, # ^ |   0 You first solution using set is failing on the following test case: CF Stress
 » 5 weeks ago, # |   0 it isn't enjoyable ..XD the wrong answer expected NO, found YES [4957th token]can someone tell me/(give any tc) where it's failing? 159139893
•  » » 5 weeks ago, # ^ |   0 Your code is failing on the following test case: Ticket 9678
 » 5 weeks ago, # |   +13 Here is my O(n log n) solution, but it's much shorter and simplier to understand than in editorial. The main idea is that we iterate through elements in increasing order, then we should look for the segment that has the maximum possible sum and contains our element as maximum. How do we do that? Let's mark elements in the array if we have already looked at them. Also let's store segments of continious marked elements. In these segments we will store sum, starting and ending point of segment, maximum prefix sum and maximum suffix sum (it can be zero). For simplicity we will store segments in array. If we have array [l, r] we will store it only in a[l] and a[r]. Imagine we have element x in position i, then we should look for the segments which are stored at a[i - 1] and a[i + 1] (if it is possible and they are marked). Then we count maximum sum, it is (i ? a[i - 1].suf : 0) + x + (i + 1 < n ? a[i + 1].pref : 0), if it's greater than x, then answer is NO. Then we update sum, pref, suf and store new segment in a[a[i - 1].start] and a[a[i + 1].end]]. Here is code 159141199.PS: sorry for bad english)
 » 5 weeks ago, # | ← Rev. 2 →   0 sorry, could someone explain what marks in this formula "F(s)=10×s^1+11×s^2+11×s^3…11×s^n−1+1×s^n" from the explanation under task C values s^1 or s^ 2
 » 5 weeks ago, # |   +9 Why in F you asked for answer for only one k, and not sum over all? Solution doesn't change I think but implementation becomes easier a bit
 » 5 weeks ago, # | ← Rev. 2 →   0 Thanks
 » 5 weeks ago, # | ← Rev. 2 →   0 For problem D, why do we need to subtract pref[i-1] when we're only querying max prefix sum from [i, next greatest element]? Having max prefix sum[i, next greatest element] greater than a[i] would satisfy the requirement, what is the purpose of subtracting pref[i-1]?
 » 5 weeks ago, # |   0 In F,why ans_new=ans_old−cntsz_old(OR)−cntsz_new(NR)+cntsz_new(OR)+cntsz_new(NR)? -cntsz_new(NR)+cntsz_new(NR)=0.
 » 5 weeks ago, # |   0 In the problem B the solution is not correct ! The corner test case :INPUT.TXT 1 4 2 1 2 1OUPUT.TXT 3 4 1 2But the result of the tutorial solution is -1
•  » » 5 weeks ago, # ^ |   0 According to the constraint, s[i] <= s[i + 1].
•  » » » 5 weeks ago, # ^ |   0 Oh , sorry , sorry ! I didn't see that .
•  » » » 5 weeks ago, # ^ |   0 Oh, sorry, sorry ! I didn't see that .
•  » » » » 5 weeks ago, # ^ |   0 Remove you eye patch for better clarity
•  » » » » » 5 weeks ago, # ^ |   +1 Thanks , bro !
 » 4 weeks ago, # |   0 Can anyone explain me the approach of finding max prefix sum in question D. I have implemented it differently but I am not getting editorial one. Thankyou
 » 4 weeks ago, # | ← Rev. 2 →   0 https://codeforces.com/contest/1691/submission/160003829I feel like my solution is same as editorial.I have tried hours to find the bug but can't fine.Can anyone help?UPD : I found my Bug & AC now
•  » » 2 weeks ago, # ^ | ← Rev. 2 →   0 Can you check what's wrong in this solution? Link Thanks in advance!
 » 4 weeks ago, # | ← Rev. 3 →   0 Can we do problem E with dfs? I have tried but I'm not understanding what is wrong. I have separately sorted red and blue according to 1) start points, 2) end points. And then found the range of other color which will lie within the same color range. and visited the segments using DFS. I have considered the dfs as bipartite graph. code#include using namespace std; using ll = long long; #define fastio ios_base::sync_with_stdio(false); #define endl "\n"; template void pnl(T a){ cout<>blue1, red1, blue2, red2; map, bool> bvis, rvis; void dfs(pair& segment,int isblue); void bsearch(vector> & vect1, vector> &vect2, pair&segment, int blue){ int lo = 0, hi = (int)vect2.size() - 1, mid, ptr_start = -1, ptr_end = -2; while(lo <= hi){ mid = lo + (hi - lo) / 2; if(segment.first <= vect2[mid].second) ptr_start = mid, hi = mid - 1; else lo = mid + 1; } lo = 0, hi = (int) vect2.size() - 1; while(lo <= hi){ mid = lo + (hi - lo) / 2; if(vect2[mid].first <= segment.second) ptr_end = mid, lo = mid + 1; else hi = mid - 1; } // cout << "ptr_start " << ptr_start << " ptr_end: " << ptr_end << endl; while(ptr_start <= ptr_end){ dfs(vect2[ptr_start], blue^1); ++ ptr_start; } ptr_start = -1, ptr_end = -2; lo = 0, hi = (int)vect1.size() - 1; while(lo <= hi){ mid = lo + (hi - lo) / 2; if(segment.first <= vect1[mid].first) ptr_start = mid, lo = mid - 1; else hi = mid + 1; } lo = 0, hi = (int) vect1.size() - 1; while(lo <= hi){ mid = lo + (hi - lo) / 2; if(vect1[mid].first <= segment.second) ptr_end = mid, hi = mid + 1; else lo = mid - 1; } while(ptr_start <= ptr_end){ dfs(vect1[ptr_start], blue^1); ++ ptr_start; } } void dfs(pair& segment,int isblue){ if(isblue){ if(bvis[segment]) return ; bvis[segment] = true; bsearch(red1, red2, segment, isblue); } else{ if(rvis[segment]) return ; rvis[segment] = true; bsearch(blue1, blue2, segment, isblue); } } void testcase(int test){ // testcasesid int n; cin >> n; for(int i = 0; i < n; ++ i){ int start, end, color; cin >> color >> start >> end; if(color){ blue1.push_back({start, end}); } else{ red1.push_back({start, end}); } } sort(blue1.begin(), blue1.end(), [](const auto &a, const auto &b){ return a.first < b.first;}); sort(red1.begin(), red1.end(), [](const auto &a, const auto &b){ return a.first < b.first; }); blue2 = blue1; red2 = red1; sort(blue2.begin(), blue2.end(), [](const auto &a, const auto &b){ return a.second < b.second;}); sort(red2.begin(), red2.end(), [](const auto &a, const auto &b){ return a.second < b.second; }); int cnt = 0; for(auto &u: blue1){ if(not bvis[u]){ ++ cnt; dfs(u, 1); } } for(auto &u: red1){ if(not rvis[u]){ ++ cnt; dfs(u, 0); } } cout << cnt << endl; return; } int32_t main(){ fastio; int test=1,z=1; cin>>test; while(z<=test){ testcase(z); z++; } return 0; } Anyone, pls help
 » 7 days ago, # |   0 In E problems , can someone tell me why the sort way of the struct in set will cause the wa on 36 I think the only metters is the first element.wa on 36accept