提交时间:2025-10-29 16:22:00
运行 ID: 38816
#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; }