Submission #3441496


Source Code Expand

import java.util.*;
import java.io.*;
 
import static java.lang.Math.*;
import static java.util.Arrays.*;
import static java.util.Collections.*;
 
public class Main{
    static final long mod=1000000007;
    
    public  static void main(String[] args)   throws Exception, IOException{
        Reader sc = new Reader(System.in);
        PrintWriter out=new PrintWriter(System.out);
        // int n=sc.nextInt();
        // char c[][] = new char[h][w];
        // char c[]=sc.nextString().toCharArray();
        // int d[]=new int[n];
        // for(int i=0; i<n; i++) {d[i]=sc.nextInt();}

        int n=sc.nextInt();
        long f[] = new long[n+1];
        long d[] = new long[n*2];
        
        f[1]=1;
        for (int i = 2; i <= n; i++) {
        	f[i] = f[i-1] * i;
        	f[i] %= mod;
        }
        
        
        for (int i = 0; i < n; i++) {
        	d[i] = sc.nextLong()<<40;
        }
        for (int i = 0; i < n; i++) {
        	d[i+n] = sc.nextLong()<<40;
        	d[i+n] += 1;
        }
        sort(d);
        
        int pre=(int)(d[0]%2),mx=1,c=0,s=0;
        long ans=1;
        for (int i = 1; i < n*2; i++) {
        	if(d[i]%2==pre) {mx++;}
        	else {
        		c++; pre=(int)(d[i]%2);
        		if(c==2) {
        		  c=0;
        		  ans*=f[min(mx,s)]; ans%=mod; 
        		  if(mx<=s)mx=1+s-mx;
        		  else {c=1;mx=1; s=mx-s;}
        		  
        		}
        		else {s=mx;mx=1;}  
        	}
        }
    	ans*=f[mx];
    	ans%=mod;

        out.println(ans);
        out.flush();
    }

    static void db(Object... os){
        System.err.println(Arrays.deepToString(os));
    }  
}

class P implements Comparable<P>{
    int id, d;
    P(int  id, int d) {
        this.id=id;
        this.d=d;
    }
    public int compareTo(P p){
        return d-p.d; //des
    }
}

class Reader
{ 
    private BufferedReader x;
    private StringTokenizer st;
    
    public Reader(InputStream in)
    {
        x = new BufferedReader(new InputStreamReader(in));
        st = null;
    }
    public String nextString() throws IOException
    {
        while( st==null || !st.hasMoreTokens() )
            st = new StringTokenizer(x.readLine());
        return st.nextToken();
    }
    public int nextInt() throws IOException
    {
        return Integer.parseInt(nextString());
    }
    public long nextLong() throws IOException
    {
        return Long.parseLong(nextString());
    }
    public double nextDouble() throws IOException
    {
        return Double.parseDouble(nextString());
    }
}

Submission Info

Submission Time
Task A - 1D Matching
User mukku
Language Java8 (OpenJDK 1.8.0)
Score 0
Code Size 2654 Byte
Status RE
Exec Time 265 ms
Memory 45460 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 500
Status
AC × 1
WA × 1
AC × 1
WA × 1
RE × 12
Set Name Test Cases
Sample example0.txt, example1.txt
All 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, example0.txt, example1.txt
Case Name Status Exec Time Memory
000.txt RE 229 ms 39860 KB
001.txt RE 163 ms 28784 KB
002.txt RE 203 ms 32472 KB
003.txt RE 183 ms 32500 KB
004.txt RE 254 ms 42872 KB
005.txt RE 260 ms 42872 KB
006.txt RE 252 ms 41144 KB
007.txt RE 265 ms 45460 KB
008.txt RE 265 ms 42380 KB
009.txt RE 245 ms 44292 KB
010.txt RE 252 ms 42500 KB
011.txt RE 258 ms 41104 KB
example0.txt AC 70 ms 18644 KB
example1.txt WA 69 ms 18644 KB