順序三元組

十二分熱愛發表於2018-08-02

給定一個長度為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
#include <iostream>
#include<cstdio>
typedef long long ll;
using namespace std;
int main(){
	ll N;
	cin>>N;
	int in[100001];
	ll a=0,b=0,c=0;
	for(ll i=0;i<N;i++)
	{
		scanf("%lld",&in[i]);
		if(in[i]==3)c++;
	}
	ll ans=0;
	for(ll i=0;i<N;i++)
	{
		if(in[i]==1)a++;	
		if(in[i]==3)c--;
		if(in[i]==2){
			ans+=a*c;
		}
	}
	cout<<ans<<endl;
}