using System;
public class Test
{
public static int FindPivot(int[] array)
{
var i = 0;
var j = array.Length - 1;
var ans = 1<<20;
var idx = 1<<20;
while (i < j)
{
var mid = i + (j - i) / 2 + 1;
// Console.WriteLine(String.Format("{0}, {1}, {2}", i, mid, j));
if (array[mid] < array[array.Length - 1])
{
if(array[mid] < ans || (array[mid] == ans && mid < idx)) { ans = array[mid]; idx = mid;}
j = mid - 1;
}
else if (array[mid] > array[array.Length - 1])
{
i = mid;
}
else
{
// Here did not consider case if array[i] < mid
if(array[j] < ans || (array[j] == ans && j < idx)) { ans = array[j]; idx = j;}
if(array[i] < ans || (array[i] == ans && i < idx)) { ans = array[i]; idx = i;}
if (array[mid] == array[j])
{
j--;
}
if (array[mid] == array[i])
{
i++;
}
}
}
if(array[j] < ans || (array[j] == ans && j < idx)) { ans = array[j]; idx = j;}
if(array[i] < ans || (array[i] == ans && i < idx)) { ans = array[i]; idx = i;}
Console.WriteLine("Minimum = " + ans);
return idx;
}
public static void Main()
{
int []a = {7,7,7,7,8,8,9,9,1,2,2,2,7,7};
int []b = {3,3,1,3,3,3,3,3};
int []c = {1,2,3,4};
int []d = {4,4,4,4};
int []e = {3,3,3,3,3,3,3,1,3};
int []f = {4,5,6,7,1,1,1,1};
Console.WriteLine(FindPivot(a));
Console.WriteLine(FindPivot(b));
Console.WriteLine(FindPivot(c));
Console.WriteLine(FindPivot(d));
Console.WriteLine(FindPivot(e));
Console.WriteLine(FindPivot(f));
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyBpbnQgRmluZFBpdm90KGludFtdIGFycmF5KQogICAgewogICAgICAgIHZhciBpID0gMDsKICAgICAgICB2YXIgaiA9IGFycmF5Lkxlbmd0aCAtIDE7CiAgICAgICAgdmFyIGFucyA9IDE8PDIwOwogICAgICAgIHZhciBpZHggPSAxPDwyMDsKICAgICAgICAKICAgICAgICB3aGlsZSAoaSA8IGopCiAgICAgICAgewogICAgICAgICAgICB2YXIgbWlkID0gaSArIChqIC0gaSkgLyAyICsgMTsKICAgICAgICAgIC8vICBDb25zb2xlLldyaXRlTGluZShTdHJpbmcuRm9ybWF0KCJ7MH0sIHsxfSwgezJ9IiwgaSwgbWlkLCBqKSk7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoYXJyYXlbbWlkXSA8IGFycmF5W2FycmF5Lkxlbmd0aCAtIDFdKQogICAgICAgICAgICB7CiAgICAgICAgICAgIAlpZihhcnJheVttaWRdIDwgYW5zIHx8IChhcnJheVttaWRdID09IGFucyAmJiBtaWQgPCBpZHgpKSB7IGFucyA9IGFycmF5W21pZF07ICBpZHggPSBtaWQ7fQogICAgICAgICAgICAgICAgaiA9IG1pZCAtIDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoYXJyYXlbbWlkXSA+IGFycmF5W2FycmF5Lkxlbmd0aCAtIDFdKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpID0gbWlkOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAKICAgICAgICAgICAgCS8vIEhlcmUgZGlkIG5vdCBjb25zaWRlciBjYXNlIGlmIGFycmF5W2ldIDwgbWlkICAKICAgICAgICAgICAgCWlmKGFycmF5W2pdIDwgYW5zIHx8IChhcnJheVtqXSA9PSBhbnMgJiYgaiA8IGlkeCkpIHsgYW5zID0gYXJyYXlbal07ICBpZHggPSBqO30KICAgICAgICAgICAgCWlmKGFycmF5W2ldIDwgYW5zIHx8IChhcnJheVtpXSA9PSBhbnMgJiYgaSA8IGlkeCkpIHsgYW5zID0gYXJyYXlbaV07ICBpZHggPSBpO30KICAgICAgICAgICAgICAgIGlmIChhcnJheVttaWRdID09IGFycmF5W2pdKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGotLTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChhcnJheVttaWRdID09IGFycmF5W2ldKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZihhcnJheVtqXSA8IGFucyB8fCAoYXJyYXlbal0gPT0gYW5zICYmIGogPCBpZHgpKSB7IGFucyA9IGFycmF5W2pdOyAgaWR4ID0gajt9CiAgICAgICAgaWYoYXJyYXlbaV0gPCBhbnMgfHwgKGFycmF5W2ldID09IGFucyAmJiBpIDwgaWR4KSkgeyBhbnMgPSBhcnJheVtpXTsgIGlkeCA9IGk7fQogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJNaW5pbXVtID0gIiArIGFucyk7CiAgICAgICAgcmV0dXJuIGlkeDsKICAgIH0KCQoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCWludCBbXWEgPSB7Nyw3LDcsNyw4LDgsOSw5LDEsMiwyLDIsNyw3fTsKCQlpbnQgW11iID0gezMsMywxLDMsMywzLDMsM307CgkJaW50IFtdYyA9IHsxLDIsMyw0fTsKCQlpbnQgW11kID0gezQsNCw0LDR9OwoJCWludCBbXWUgPSB7MywzLDMsMywzLDMsMywxLDN9OwoJCWludCBbXWYgPSB7NCw1LDYsNywxLDEsMSwxfTsKCQlDb25zb2xlLldyaXRlTGluZShGaW5kUGl2b3QoYSkpOwoJCUNvbnNvbGUuV3JpdGVMaW5lKEZpbmRQaXZvdChiKSk7CgkJQ29uc29sZS5Xcml0ZUxpbmUoRmluZFBpdm90KGMpKTsKCQlDb25zb2xlLldyaXRlTGluZShGaW5kUGl2b3QoZCkpOwoJCUNvbnNvbGUuV3JpdGVMaW5lKEZpbmRQaXZvdChlKSk7CgkJQ29uc29sZS5Xcml0ZUxpbmUoRmluZFBpdm90KGYpKTsKCX0KfQ==