Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
29322 baka24 【BJ】T3 C++ 运行超时 50 1000 MS 308 KB 1058 2024-05-06 14:02:55

Tests(5/10):


#include<bits/stdc++.h> using namespace std; #define int long long const int MAXN=200010,inf=1000000000,Mod=1000000007; int n,l,r,m,ans,a[MAXN],use[MAXN]; int C[MAXN]; int lb(int x){return x&(-x);} void upd(int x,int y){ for(int i=x;i<=n;i+=lb(i))C[i]+=y; } int qry(int x){ int res=0; for(int i=x;i>=1;i-=lb(i))res+=C[i]; return res; } void dfs(int now,int sum){ if(sum>r)return; if(now==n+1){ ans+=sum>=l; return; } if(a[now]){ sum+=now-1-qry(a[now]); upd(a[now],1); dfs(now+1,sum); upd(a[now],-1); return; } for(int i=1;i<=n;i++){ if(!use[i]){ use[i]=1; upd(i,1); dfs(now+1,sum+now-qry(i)); upd(i,-1); use[i]=0; } } } void slv(){ scanf("%lld%lld%lld",&n,&l,&r); for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); use[a[i]]=1; } dfs(1,0); printf("%lld",ans); } signed main(){ slv(); return 0; }


测评信息: