Array rotate and delete

Правка en2, от machinepainter, 2019-06-13 18:09:06

Based on the problem in GeeksForGeeks here. I came across a solution here.

The question is as follows

Given an array arr[] of N integers. Do the following operation n-1 times. 
For every Kth operation:

Right rotate the array clockwise by 1.

Delete the (n-k+1)th last element.

Now, find the element which is left at last.

If (n-k+1)th last element doesnt exist, delete the first.

Can someone please help me understand the solution. Primarily I need help in the following block:

if(n==1) cout<<arr[0]<<endl;
else if(n%2) {
    ll ind = n-3;
    ind = floor(ind/4);
    ind = 3+ind;
    cout<<arr[ind-1]<<endl;
} else {
    ll ind = n-2;
    ind = floor(ind/4);
    ind = 2+ind;
    cout<<arr[ind-1]<<endl;
}

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
en5 Английский machinepainter 2019-06-13 18:15:08 0 (published)
en4 Английский machinepainter 2019-06-13 18:14:48 42
en3 Английский machinepainter 2019-06-13 18:13:42 586 (saved to drafts)
en2 Английский machinepainter 2019-06-13 18:09:06 0 (published)
en1 Английский machinepainter 2019-06-13 18:08:20 982 Initial revision (saved to drafts)