Paste Search Dynamic
Recent pastes
ans
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. long long  fact(long long int n)
  5. {
  6.     if(n == 0)
  7.           return 1;
  8.    long long  int i = n, fact = 1;
  9.     while (n / i != n)
  10.     {
  11.         fact = ((fact)%1000000007 * (i)%1000000007)%1000000007;
  12.         i--;
  13.     }
  14.     return (fact)%1000000007;
  15. }
  16.  
  17. int main()
  18. {
  19.         long long int n, m;
  20.         cin>>n>>m;
  21.         queue<long long int >q;
  22.         vector<bool>vis(n+1, false);
  23.         vis[0]=true;
  24.         for(long long int i=0;i<m;i++)
  25.         {
  26.                 long long int a;
  27.                 cin>>a;
  28.                 q.push(a);
  29.                 vis[a]=true;
  30.         }
  31.        
  32.         long long int ans=1;
  33.         while(!q.empty())
  34.      {
  35.      // long long int x=q.size();
  36.      // ans=((ans)%1000000007*(fact(x))%1000000007)%1000000007;
  37.         for(long long int i=0;i<q.size();i++)
  38.         {
  39.                 long long int temp=q.front();
  40.                 q.pop();
  41.                 if(((temp-1)>=1) && (!vis[temp-1]) )
  42.                 {
  43.                         vis[temp-1]=true;
  44.                         q.push(temp-1);
  45.                 }
  46.                 if(((temp+1)<=n) && (!vis[temp+1]))
  47.                 {
  48.                         vis[temp+1]=true;
  49.                         q.push(temp+1);
  50.                 }
  51.         }
  52.      long long int x=q.size();
  53.         if(x!=0)
  54.         ans=((ans)%1000000007*(fact(x))%1000000007)%1000000007;
  55.      }
  56.      cout<<(ans)%1000000007<<endl;
  57. }
Parsed in 0.007 seconds