暴力+卡常=AC?
查看原帖
暴力+卡常=AC?
306560
kevinchw楼主2022/4/4 22:51

不开O2:

https://www.luogu.com.cn/record/73193868

开O2:

https://www.luogu.com.cn/record/73193899

#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define inf 2000000000
#define ldb long double
#define db double
#define ft float
#define myset(a,b,c,d) for(int i=b;i<=c;i++)a[i]=d;
using namespace std;

int en[30005],beg[30005];
ll a[30005];
int main()
{
    int n;
    cin>>n;
    for(register/*寄存器卡常*/ int i=1;i<=n;++i)scanf("%lld",&a[i]);
    for(register int i=1;i<=n;++i/*前置++卡常*/)
        for(register int j=i+1;j<=n;++j)
        {
            bool f=a[i]<a[j];//这里不用if可以使常数下降很多
            en[j]+=f;
            beg[i]+=f;
        }
    ll sum=0;
    for(register int i=1;i<=n;++i)
    {
        sum+=1ll*beg[i]*en[i];
    }
    cout<<sum;
    return 0;
}
2022/4/4 22:51
加载中...