답안 #1084377

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1084377 2024-09-06T06:53:38 Z blacktulip Fishing Game (RMI19_fishing) C++17
20 / 100
2000 ms 604 KB
#include <bits/stdc++.h>

using namespace std;

typedef long long lo; 

#define fi first
#define se second
#define endl "\n"
#define pb push_back
#define int long long
#define fio() ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define FOR for(int i=1;i<=n;i++)
#define mid ((start+end)/2)
#define ort ((bas+son)/2)
#define _ << " " <<

const lo inf = 1000000000;
const lo li = 500005;
const lo mod = 1000000007;

int n,m,a[li],k,flag,t,b[li],c[li];
int cev;
string s;
vector<int> v;

inline int add(int x,int y){
	if(x+y>=mod)return x+y-mod;
	return x+y;
}

inline int mul(int x,int y){
	return (x%mod)*(y%mod)%mod;
}

inline int f(int aveb,int bvec,int avec,int sira,int flag){
	int cevv=0;
	if(aveb==0 && avec==0 && bvec==0)return 1;
	//~ cerr<<aveb _ bvec _ avec _ sira _ flag<<endl;
	if(sira==0){
		if(avec==0 && aveb==0)cevv=add(cevv,f(aveb,bvec,avec,sira+1,flag));
		if(avec)cevv=add(cevv,mul(avec,f(aveb,bvec+1,avec-1,sira+1,flag)));
		if(aveb)cevv=add(cevv,mul(aveb,f(aveb-1,bvec,avec,sira+1,1)));
	}
	if(sira==1){
		if(aveb==0 && bvec==0)cevv=add(cevv,f(aveb,bvec,avec,sira+1,flag));
		if(aveb)cevv=add(cevv,mul(aveb,f(aveb-1,bvec,avec+1,sira+1,flag)));
		if(bvec)cevv=add(cevv,mul(bvec,f(aveb,bvec-1,avec,sira+1,1)));
	}
	if(sira==2){
		if(avec==0 && bvec==0 && flag)cevv=add(cevv,f(aveb,bvec,avec,0,0));
		if(bvec && flag)cevv=add(cevv,mul(bvec,f(aveb+1,bvec-1,avec,0,0)));
		if(avec)cevv=add(cevv,mul(avec,f(aveb,bvec,avec-1,0,0)));
	}
	return cevv;
}

int32_t main(void){
	fio();
	cin>>n>>t;
	while(t--){
		map<int,int> mpp1,mpp2,mpp3;
		int avec=0,bvec=0,aveb=0;
		for(int i=1;i<=2*n;i++){
			cin>>a[i];
			mpp1[a[i]]++;
		}
		for(int i=1;i<=2*n;i++){
			cin>>b[i];
			mpp2[b[i]]++;
			if(mpp1[b[i]])aveb++;
		}
		for(int i=1;i<=2*n;i++){
			cin>>c[i];
			mpp3[c[i]]++;
			if(mpp1[c[i]])avec++;
			if(mpp2[c[i]])bvec++;
		}
		//~ cerr<<aveb  _ bvec _ avec<<endl;
		cout<<f(aveb,bvec,avec,0,0)<<endl;
	}
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Execution timed out 2088 ms 348 KB Time limit exceeded
4 Execution timed out 2067 ms 348 KB Time limit exceeded
5 Execution timed out 2023 ms 344 KB Time limit exceeded
6 Execution timed out 2057 ms 348 KB Time limit exceeded
7 Execution timed out 2104 ms 344 KB Time limit exceeded
8 Execution timed out 2061 ms 348 KB Time limit exceeded
9 Execution timed out 2037 ms 604 KB Time limit exceeded
10 Execution timed out 2085 ms 344 KB Time limit exceeded