| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 38816 | 23级徐泽厚 | 【S】T2 | C++ | 运行超时 | 15 | 1000 MS | 3764 KB | 852 | 2025-10-29 16:22:00 |
#include <bits/stdc++.h> #define int long long using namespace std; const int MOD=1e9+7; int n,m; int x[50005]; int pm[300005]; int ans[50005]; int bs(int P[], int L, int R, int x) { if(L>R) return 0; int MID = (L + R) / 2; if(P[MID] == x || L == R) return P[MID]; if(P[MID] > x) return P[MID] + bs(P, L, MID - 1, x); if(P[MID] < x) return P[MID] + bs(P, MID + 1, R, x); } signed main(){ scanf("%lld%lld",&n,&m); for (int i=1;i<=m;i++){ scanf("%lld",&x[i]); } for (int i=1;i<=n;i++){ pm[i]=i; } do{ for (int i=1;i<=m;i++){ ans[i]=(ans[i]+bs(pm,1,n,x[i]))%MOD; } }while (next_permutation(pm+1,pm+n+1)); for (int i=1;i<=m;i++){ printf("%lld\n",ans[i]); } return 0; }