给定一个长度为N的数组A=[A1, A2, ... AN],已知其中每个元素Ai的值都只可能是1, 2或者3。
请求出有多少下标三元组(i, j, k)满足1 ≤ i < j < k ≤ N且Ai < Aj < Ak。
Input
第一行包含一个整数N
第二行包含N个整数A1, A2, ... AN。(1 ≤ Ai ≤ 3)
对于30%的数据,1 ≤ N ≤ 100
对于80%的数据,1 ≤ N ≤ 1000
对于100%的数据,1 ≤ N ≤ 100000
Output
一个整数表示答案
Sample Input
6
1 3 2 1 2 3
Sample Output
3
import java.util.*;
public class Main {
static Scanner in =new Scanner(System.in);
public static void main(String[] args) {
int[] a=new int[100005];
while(in.hasNext()){
int n=in.nextInt();
for (int i = 1; i <=n; i++) {
a[i]=in.nextInt();
}
long cnt3=0,cnt23=0,cnt123=0;
for(int i=n;i>=1;i--){
if(a[i]==3)
cnt3++;
else if(a[i]==2)
cnt23=cnt23+cnt3;
else
cnt123=(cnt123+cnt23);
}
System.out.println(cnt123);
}
}
}
反思:类似于我在PAT 分类里面写的有几个PAT这个题,思路几乎一样跳跃着进行选取合适的组合