Source Code
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define mp make_pair
#define FAST ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define INF INT_MAX
#define ff first
#define ss second
#define all(v) v.begin(),v.end()
#define nl "\n"
using namespace std;
const ll MOD  = 1e9+7;
const int mxN = 2e5+1;

int m[mxN];
int main()
{
    FAST
    //==================
    ll t = 1 ;
    //cin >> t;
    while(t--){
        int n; cin >> n ;
        int p[n+1], q[n+1];
        for(int i =1;i<=n;i++)cin >> p[i];
        for(int i =1;i<=n;i++)cin >> q[i];

        bool is = 1;
        for(int i=1 ;i<=n;i++){
            ll k= ((q[i] - p[i])%i);
            if(k!=0){
                is =0;
                break;
            }else{
                ll k2 = (q[i] - p[i])/i+1;
                m[k2]++;
            }
        }
        if(!is){
            cout << 0 << nl;
            return 0 ;
        }
        ll ans =1 ;
        ll finished =0 ;
        int i =0 ;
        while(finished!=n){
            finished+= m[i];
            if(finished == n)break;
            ll k = n - finished;
            ans = ((ans%MOD) * (k%MOD))%MOD ;
            i++;
        }
        cout << ans + n << nl;



    }

}
Copy
N-dimensions Imam Droubi
GNU G++17
52 ms
1.9 MB
Runtime Error