hiho1550 顺序三元组

描述

给定一个长度为N的数组A=[A1, A2, ... AN],已知其中每个元素Ai的值都只可能是1, 2或者3。

请求出有多少下标三元组(i, j, k)满足1 ≤ i < j < k ≤ N且Ai < Aj < Ak。  

输入

第一行包含一个整数N  

第二行包含N个整数A1, A2, ... AN。(1 ≤ Ai ≤ 3)  

对于30%的数据,1 ≤ N ≤ 100  

对于80%的数据,1 ≤ N ≤ 1000  

对于100%的数据,1 ≤ N ≤ 100000  

输出

一个整数表示答案

样例输入

6
1 3 2 1 2 3

样例输出

3

 


 


 1 #include <cstdio>
 2 
 3 long long n, a[110000], t1, t2, ans;
 4 
 5 int main () {
 6     scanf("%lld", &n);
 7     for(int i = 1 ; i <= n ; i ++)
 8         scanf("%lld", &a[i]), t2 += a[i] == 3;
 9     for(int i = 1 ; i <= n ; i ++) {
10         t1 += a[i] == 1;
11         t2 -= a[i] == 3;
12         ans += (a[i] == 2 ) * (t1 * t2);
13     }
14     printf("%lld", ans);
15 }
View Code

 


 

posted @ 2017-08-18 16:56  KingSann  阅读(208)  评论(0编辑  收藏  举报