思路:
峰值肯定是n
考虑n左右放哪些数,决定放哪些数以后,排列是固定的
即n左边放的数单调递增,n右边放的数单调递减
方案数为C(n-1,0)+C(n-1,1)+…+C(n-1,n-1)=2^(n-1)
#include <cstdio>
#include <iostream>
using namespace std;
typedef long long ll;
const ll mod = 1e9 + 7;
ll n;
ll ksm(ll a, ll n, ll m)
{
if(n == 0) return 1;
ll x = ksm(a, n / 2, m);
ll ans = x * x % m;
if(n % 2 == 1) ans = ans * a % m;
return ans;
}
int main()
{
scanf("%lld", &n);
printf("%lld\n", ksm(2, n - 1, mod));
return 0;
}