I am trying to solve this problem http://www.codechef.com/problems/CM1404 but i am getting wrong answer. can anyone tell me where i am wrong ? My algorithm
(i). If N > floor(N/2)ceil(N/2) then return ((ceil(sqrt(N/2)))1)2) ; (ii) Else return ((floor(sqrt(N/2)))1)*2)+1; here is the link of my code https://gist.github.com/Shravan40/cc9c509d325c0c959df6 asked 25 Oct '14, 05:20

I honestly don't know why you have to divide N to 2 or even divide them. N means the sliced pizza already. What you've been asked in the problem is minimum number of SLICES for you to get N or greater than that. Well, to solve it, you can picture out the pizza and slice once, twice, thrice and so on. As you can see, the best way to cut the pizza into its maximum, is to cut it straight through ALL the slices already. As shown above in the picture, you can get 2 pieces with 1 slice, 4 pieces with 2 slices, 7 pieces with 3 slices and 11 pieces with 4 slices. The problem didn't state to cut the pizza equally so the cutting style should be OK. The maximum number of pieces cut is also a sequence called "lazy caterer's sequence". You can read about it here: link text Then, to solve the problem, you just have to check the range in which N first appeared. :D Happy coding~ answered 25 Oct '14, 06:20

You're method is a bit wrong the pieces need not to be equal. for ex if n=10 your code will give output 5 but 10 pieces can be obtained in 4 proper cuts. answered 25 Oct '14, 06:11
