1. 程式人生 > >817B Makes And The Product(閱讀題)

817B Makes And The Product(閱讀題)

題目大意:

給你一串數,問你有個三元組(a,b,c)滿足: a * b * c 小於等於任意三個元素的乘積。

程式碼:

#include<bits/stdc++.h>
using namespace std;
int a[100060];
long long int C(int x,int y)
{
    long long int ans=0;
    if(x==2)
    {
        ans=(long long int)y*(long long int)(y-1);
        ans/=2;
    }
    else
    {
        ans=(long
long int)y*(long long int)(y-1)*(long long int)(y-2); ans/=6; } return ans; } int main() { int n; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&a[i]); } sort(a,a+n); int num[3]={0}; int flag=0; int t=a[0]; num[0]++; for(int
i=1;i<n;i++) { if(flag>=3)break; if(a[i]>t) { t=a[i]; flag++; } num[flag]++; } //cout<<num[0]<<num[1]<<num[2]<<endl; if(num[0]>=3) { printf("%lld",C(3,num[0])); } else
{ if(num[0]==2) { printf("%d",num[1]); } else { if(num[1]>=2)printf("%lld",C(2,num[1])); else printf("%d",num[2]); } } }