問題の記述
の列の数[1]、[2 ]、...、[n]は、添え字I、J、Kを満たすが、0 <I <J <K <用の場合 、N + 1 及び[I] <A [J] <[K] 、 [I]、[Jと呼ばれる ]、[K]はトリプルの集合、[j]がインクリメントされ、中心トリプルをインクリメントします。
中央のトリプルをインクリメントすることができますどのように多くの要素を依頼する列の数、列番号を与えられました。
入力フォーマット
入力の最初の行の整数nを含んでいます。
二行目に含まれるn個の整数[1]、[2 ]、...、[n]は、 列の所定の数を表し、隣接する整数の間の空間によって分離されました。
出力フォーマットの
出力ラインには、答えを表す整数が含まれています。
サンプル入力
。5
。1 2 3 5 5
の出力例
2つの
試料示す
[2]と[4]はトライアドの中心であってもよいです。
例では、評価尺度と一致した
例では50%による評価のために、2 <= N <= 100,0 <= <= 1000の列数。
評価のためのすべてのユースケース、2 <= N <= 1000,0 << = = 10000の列数。
package 第十三次模拟;
import java.util.Scanner;
public class Demo5递增三元组 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int [] num = new int [n];
for (int i = 0; i < n; i++) {
num[i]=sc.nextInt();
}
sc.close();
int nums =0;
// int []count = new int [n];
int []b = new int [n];
boolean []bool = new boolean [n];
// int []c = new int [n];
for (int i = 1; i <n; i++) {
for (int j = 0; j <i; j++) {
if(num[i]>num[j]){
b[i]=num[i];
// count[i]++;
}
}
}
for (int i = 2; i <n; i++) {
for (int j = 1; j <i; j++) {
if(!bool[j]&&num[i]>b[j] ){
nums++;
bool[j]=true;
// System.out.print(b[j]+" ");
}
}
}
// System.out.println();
System.out.println(nums);
}
}