Submission #3419797


Source Code Expand

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<set>
#include<map>
#include<queue>
using namespace std;
#define rep(i,n) for(int (i)=0;(i)<(n);++i)
#define rrep(i,n) for(int (i)=(n)-1;(i)>=0;--i)
#define rep1(i,n) for(int (i)=1;(i)<=(n);++i)
#define rrep1(i,n) for(int (i)=(n);(i)>=1;--i)
#define pb push_back
#define fr first
#define sc second
#define int long long
typedef int ss;
typedef long long ll;
typedef pair<int,int> P;
typedef pair<long long,long long> LP;
typedef double db;
using namespace std;

ll N;
ll A[100000];
ll B[100000];
vector<ll> xs;
ll w[200000];
vector<ll> F;
ll mod = 1e+9 + 7;
ll jo[200001];

int extgcd(int a,int b,int& x,int& y){
  int d=a;
  if(b != 0){
    d = extgcd( b , a%b, y, x);
    y -= (a/b)*x;
  } else{
    x=1; y=0;
  }
  return d;
}

int mod_inverse(int a,int m){
  int x,y;
  extgcd(a,m,x,y);
  return (m+x%m) %m;
}

ll comb(ll n,ll r){
  return (((jo[n]*mod_inverse(jo[r],mod)) %mod) *mod_inverse(jo[n-r],mod))%mod;
}

ss main()
{
  cin>>N;
  jo[0]=jo[1]=1LL;
  rep1(i,2*N){
    jo[i]= (jo[i-1]*i) %mod;
  }
  rep(i,N){
    cin>>A[i];
    xs.pb(A[i]);
  }
  rep(i,N){
    cin>>B[i];
    xs.pb(B[i]);
  }
  sort(xs.begin(),xs.end());
  xs.erase( unique(xs.begin(),xs.end()) , xs.end() );
  rep(i,N){
    A[i] = lower_bound(xs.begin(),xs.end(),A[i]) - xs.begin();
    B[i] = lower_bound(xs.begin(),xs.end(),B[i]) - xs.begin();
    w[A[i]]=0;
    w[B[i]]=1;
  }
  ll cnt;
  for(int i = 0; i< 2*N ;i++){
    cnt = 1LL;
    while(i + 1 < 2*N && w[i] == w[i+1] ){
      i++;
      cnt++;
    }
    F.pb(cnt);
  }
  ll ans = 1LL;
  rep(i,F.size()-1){
    if( F[i] <= F[i+1] ){
      ans = (ans * jo[F[i]])%mod;
      F[i+1]-=F[i];
    }
    else{
      ans = (((ans * jo[F[i+1]])%mod)*comb(F[i],F[i+1]))%mod;
      F[i+2] += (F[i]-F[i+1]);
      F[i] = F[i+1] = 0;
    }
  }
  cout<<ans<<endl;
}

Submission Info

Submission Time
Task A - 1D Matching
User miyajiro
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2041 Byte
Status CE

Compile Error

./Main.cpp:58:9: error: ‘::main’ must return ‘int’
 ss main()
         ^