import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int []data=new int[num];
for (int i = 0; i <num; i++) {
data[i]=sc.nextInt();
}
System.out.println(do1(data));
}
public static int do1(int []data) {
int day=0;
ArrayList<Integer>data0=new ArrayList<>();
for (int i = data.length-1; i >0 ; i--) {
if (data[i]>data[i-1]) {
data0.add(0,data[i]);
}
}
data0.add(0, data[0]);
if (data.length==data0.size()) {
return 0;
}
day++;
int size0=data0.size();
while (data0.size()>1) {
size0=data0.size();
data0= do2(data0);
if (data0.size()==size0) {
break;
}
day++;
}
return day;
}
public static boolean test(int []data) {
ArrayList<Integer>data0=new ArrayList<>();
boolean b=false;//是否有人被杀死
for (int i = data.length-1; i >0 ; i--) {
if (data[i]<data[i-1]) {
b=true;
//break;
}
if (data[i]>data[i-1]) {
data0.add(data[i]);
}
}
return b;
}
public static ArrayList<Integer> do2(ArrayList<Integer>data0) {
ArrayList<Integer>data1=new ArrayList<>();
for (int i = data0.size()-1; i >0 ; i--) {
if (data0.get(i)>data0.get(i-1)) {
data1.add(0,data0.get(i));
}
}
data1.add(0, data0.get(0));
return data1;
}
public static String changeStr(String str1) {
char[] ch1 = str1.toCharArray();
ArrayList<Integer> a = new ArrayList<>();
a.add(0);
ArrayList<Integer> aend = new ArrayList<>();
for (int i = 0; i < ch1.length-1; i++) {
if (ch1[i] <= '9' && ch1[i] > '0' && !(ch1[i + 1] <= '9' && ch1[i + 1] >'0')) {
a.add(i + 1);
}
if (ch1[i+1] <= '9' && ch1[i] > '0' && !(ch1[i] <= '9' && ch1[i + 1] >'0')) {
aend.add(i);
}
}
String[] s = new String[a.size()];
for (int i = 0; i < s.length; i++) {
int s1=a.get(i);
int s2=aend.get(i);
String s3="";
for (int j = s1; j <= s2; j++) {
s3+=ch1[j];
}
s[i]=s3;
}
int[] n = new int[a.size()];
for (int i = 0; i < s.length; i++) {
int s1=aend.get(i)+1;
int s2=s.length-1;
if (i+1<s.length) {
s2=a.get(i+1)-1;
}
String s3="";
for (int j = s1; j <= s2; j++) {
s3+=ch1[j];
}
n[i]=Integer.parseInt(s3);
}
for (int i = 0; i < n.length; i++) {
n[i] = a.get(i);
}
int[] sortNum = sortNum(n);
StringBuffer result = new StringBuffer();
for (int i = 0; i < sortNum.length; i++) {
ArrayList<Integer> eql = new ArrayList<>();
eql.add(i);
int a1 = n[sortNum[i]];
int a2 = n[sortNum[i + 1]];
if (a1 == a2) {
eql.add(i + 1);
i++;
}
String[] s1 = new String[eql.size()];
for (int j = 0; j < s1.length; j++) {
s1[j] = s[sortNum[i]];
}
String[] keys = getUrlParam(s1);
for (int j = 0; j < keys.length; j++) {
result.append(keys[j]);
}
}
return result.toString();
}
public static String[] getUrlParam(String[] keys) {
for (int i = 0; i < keys.length - 1; i++) {
for (int j = 0; j < keys.length - i - 1; j++) {
String pre = keys[j];
String next = keys[j + 1];
if (isMoreThan(pre, next)) {
String temp = pre;
keys[j] = next;
keys[j + 1] = temp;
}
}
}
return keys;
}
/**
* 比较两个字符串的大小,按字母的ASCII码比较
*
* @param pre
* @param next
* @return
*/
private static boolean isMoreThan(String pre, String next) {
if (null == pre || null == next || "".equals(pre) || "".equals(next)) {
return false;
}
char[] c_pre = pre.toCharArray();
char[] c_next = next.toCharArray();
int minSize = Math.min(c_pre.length, c_next.length);
for (int i = 0; i < minSize; i++) {
if ((int) c_pre[i] > (int) c_next[i]) {
return true;
} else if ((int) c_pre[i] < (int) c_next[i]) {
return false;
}
}
if (c_pre.length > c_next.length) {
return true;
}
return false;
}
public static int[] sortNum(int[] a) {
int[] asor = new int[a.length];
for (int i = 0; i < asor.length; i++) {
asor[i] = i;
}
fastSortNum(a, asor, 0, a.length - 1);
return asor;
}
public static void fastSortNum(int arr[], int arrsor[], int low, int high) {
int l = low;
int h = high;
int povit = arr[low];
while (l < h) {
while (l < h && arr[h] >= povit) {
h--;
}
while (l < h && arr[l] <= povit) {
l++;
}
if (l < h) {
int temp = arr[h];
arr[h] = arr[l];
arr[l] = temp;
temp = arrsor[h];
arrsor[h] = arrsor[l];
arrsor[l] = temp;
}
}
int temp = arr[low];
arr[low] = arr[l];
arr[l] = temp;
temp = arrsor[low];
arrsor[low] = arrsor[l];
arrsor[l] = temp;
if (l > low) {
fastSortNum(arr, arrsor, low, l - 1);
}
if (h < high) {
fastSortNum(arr, arrsor, l + 1, high);
}
}
public static boolean changeStr2(String str1, String str2) {
// char[] ch1 = str1.toCharArray();
char[] ch2 = str2.toCharArray();
for (int i = 0; i < ch2.length; i++) {
if (str1.indexOf(ch2[i]) != -1) {
continue;
}
return false;
}
return true;
}
public static boolean changeStr3(String str1, String str2) {
char[] ch1 = str1.toCharArray();
char[] ch2 = str2.toCharArray();
for (int i = 0; i < ch2.length; i++) {
for (int j = 0; j < ch1.length; j++) {
if (ch1[j] == ch2[i]) {
break;
}
if (j == ch1.length - 1) {
return false;
}
}
}
return true;
}
}
n个杀手排成一排,每个晚上如果每个杀手右面的编号小于自己会杀死他,最终经过几个晚上就不会有人被杀?
猜你喜欢
转载自blog.csdn.net/qq_39559604/article/details/82556036
今日推荐
周排行