+ 1

Can someone tell me the error while writing 1 on right side in second and third for loop?

This question is asked in codeforces competition .The code I have written and the solution has only difference of 1 on left and right side of second and third for loop . Can someone please tell me the error in my code? The link for problem is https://codeforces.com/contest/1370/problem/B And codes are https://code.sololearn.com/cy3qd5pTbZIo/?ref=app https://code.sololearn.com/cVOVBrit664A/?ref=app

21st Jun 2020, 7:01 PM
Ren Greyart
Ren Greyart - avatar
8 ответов
0
Ren Grevart Please can specify the what inputs you are giving to both the program while executing Check inputs it depends on number of even and odd values you give as input. Both will give same behaviour for same input even and odd numbers count.
22nd Jun 2020, 3:13 PM
DHANANJAY PATEL
DHANANJAY PATEL - avatar
0
Sir input are 4 3 2 4 6 8 10 12 3 1 3 5 7 9 11 5 2 4 6 8 10 2 4 6 8 10 5 1 3 5 7 9 1 3 5 7 9
22nd Jun 2020, 3:17 PM
Ren Greyart
Ren Greyart - avatar
0
Ren Grevart I found the spot of error. In first for loop where you are trying to add in o (odd) and e(even) vector it's adding I (looping variable) rather then input x (read by cin). Code: if (x%2 == 0) { e.push_back(I); //I should be x } else { o.push_back(I); //I should be x } Instead of pushing input x it is pushing value of iterator i
22nd Jun 2020, 3:59 PM
DHANANJAY PATEL
DHANANJAY PATEL - avatar
0
Sir but in question we have to print index that's why I am storing indexes
22nd Jun 2020, 4:03 PM
Ren Greyart
Ren Greyart - avatar
0
Ren Greyart In 2nd and 3rd for loop condition check needs I < o.siz xxe() - 1 requires parenthasis () around (o.size()-1) or int l = o.size(); and condition needs I < (l -1) This is required because of operator precedence and associativity between operators.
22nd Jun 2020, 4:40 PM
DHANANJAY PATEL
DHANANJAY PATEL - avatar
0
Sir I have tried that too. And +/- has higher precedence than < so that will not change anything.
22nd Jun 2020, 4:53 PM
Ren Greyart
Ren Greyart - avatar
0
Ren Greyart It is problem of type conversion after computation o.size() method always returns positive value that to unsigned When it compared like bellow i < o.size()-1 o.size()-1 is computes biggest unsigned number When o.size() is 0 it enters the loop and zero size vector fails and execution terminates If it compared like bellow i+1 < o.size() it works fine because I+1 becomes 1 when I is 0 and o.size() is 0 it computes to falsifying the condition and it works fine This kind of problem can be identified by exception Hope this will satisfy needs
23rd Jun 2020, 3:00 AM
DHANANJAY PATEL
DHANANJAY PATEL - avatar
0
I now understand sir, thank you for your time.
23rd Jun 2020, 6:21 AM
Ren Greyart
Ren Greyart - avatar