Submission #3513295


Source Code Expand

#include <bits/stdc++.h>
#define rep(i, n) for (rint i = 1; i <= (n); i ++)
#define re0(i, n) for (rint i = 0; i < (int) n; i ++)
#define travel(i, u) for (rint i = head[u]; i; i = e[i].nxt)
#define rint register int
using namespace std;
 
template<typename tp> inline void read(tp &x) {
  x = 0; char c = getchar(); int f = 0;
  for (; c < '0' || c > '9'; f |= c == '-', c = getchar());
  for (; c >= '0' && c <= '9'; x = (x << 3) + (x << 1) + c - '0', c = getchar());
  if (f) x = -x;
}
#define pb push_back
#define int long long
typedef long long lo;
const int N = 3e5 + 233;
const int mo = 1e9 + 7;
int n, a[N], b[N], fac[N];


inline int sgn(int x) {
  return x > 0 ? 1 : -1;
}

signed main(void) {
  read(n);
  rep (i, n) read(a[i]);
  rep (i, n) read(b[i]);
  sort(a + 1, a + n + 1);
  sort(b + 1, b + n + 1);
  fac[0] = 1;
  rep (i, n) fac[i] = fac[i - 1] * i % mo;
  int posA = n, posB = 0;
  for (int i = 2; i <= n; i ++) {
    if (abs(a[i] - b[i]) + abs(a[i - 1] - b[i - 1])
        != abs(a[i] - b[i - 1]) + abs(a[i - 1] - b[i])) {
      posA = i - 1;
      break;
    }
  }
  for (int i = n; i >= 1; i --) {
    if (abs(a[i] - b[i]) + abs(a[i - 1] - b[i - 1])
        != abs(a[i] - b[i - 1]) + abs(a[i - 1] - b[i])) {
      posB = n - i;
      break;
    }
  }
  // cout << posA << " " << posB << "\n";
  cout << fac[posA] * fac[posB] % mo << "\n";
}

Submission Info

Submission Time
Task A - 1D Matching
User vjudge3
Language C++14 (Clang 3.8.0)
Score 0
Code Size 1364 Byte
Status CE

Compile Error

./Main.cpp:1:10: fatal error: 'bits/stdc++.h' file not found
#include <bits/stdc++.h>
         ^
1 error generated.