Submission #71623


Source Code Expand

#include<cstdio>
#include<cstdlib>
#include<utility>

#define rep(i,n) for(int i=0;i<(n);i++)

using namespace std;

typedef long long ll;

const int N_MAX=100001;

template<class T>
class Fenwick_tree_dual{
	int n;
	T a[N_MAX];

public:
	void build(int n){
		this->n=n;
		rep(i,n) a[i]=0;
	}

	void add(int i,int j,T v){
		if(i==0){
			for(;j>=0;j=(j&(j+1))-1) a[j]+=v;
			return;
		}
		add(0,j,v);
		add(0,i-1,-v);
	}

	T sum(int i){
		T s=0;
		for(;i<n;i|=i+1) s+=a[i];
		return s;
	}
};

ll modpow(ll a,ll n,ll m){
	ll r=1;
	for(ll x=a%m;n;n>>=1,x=(x*x)%m) if(n&1) r=(r*x)%m;
	return r;
}

Fenwick_tree_dual<int> F;

bool set(int d1,int d2,int T){
	int d=d1+d2;
	if(d%2!=T%2 || d>T) return false;

	int a=(T-d)/2;

	// * C(T,a)
	F.add(1,T,1);
	F.add(1,a,-1);
	F.add(1,T-a,-1);

	// * C(T,d1+a)
	F.add(1,T,1);
	F.add(1,d1+a,-1);
	F.add(1,T-d1-a,-1);

	return true;
}

int main(){
	int n,T,M; scanf("%d%d%d",&n,&T,&M);

	F.build(100001);

	bool ok=true;
	rep(_,n){
		int x,y; scanf("%d%d",&x,&y);
		ok&=set(abs(x),abs(y),T);
	}

	if(!ok) return puts("0"),0;

	ll ans=1;
	for(int a=100000;a>=2;a--){
		int tmp=a;

		// a を素因数分解
		int sz=0;
		pair<int,int> pf[10];
		for(int p=2;p*p<=a;p++) if(a%p==0) {
			int e=0;
			do{ a/=p; e++; }while(a%p==0);
			pf[sz++]=make_pair(p,e);
		}
		if(a>1) pf[sz++]=make_pair(a,1);

		a=tmp;

		if(sz==1 && pf[0].second==1){
			ans=ans*modpow(a,F.sum(a),M)%M;
		}
		else{
			int num=F.sum(a);
			rep(i,sz){
				int p=pf[i].first,e=pf[i].second;
				F.add(p,p,e*num);
			}
		}
	}
	printf("%lld\n",ans);

	return 0;
}

Submission Info

Submission Time
Task D - Don't worry. Be Together
User fura2
Language C++ (G++ 4.6.4)
Score 100
Code Size 1673 Byte
Status AC
Exec Time 150 ms
Memory 1080 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:68:37: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
./Main.cpp:74:31: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]

Judge Result

Set Name part1 part2 part3
Score / Max Score 40 / 40 30 / 30 30 / 30
Status
AC × 31
AC × 31
AC × 91
Set Name Test Cases
part1 part1/part1_00_sample_00.txt, part1/part1_00_sample_01.txt, part1/part1_maxrand_00.txt, part1/part1_maxrand_01.txt, part1/part1_maxrand_02.txt, part1/part1_maxrand_03.txt, part1/part1_maxrand_04.txt, part1/part1_maxrand_05.txt, part1/part1_maxrand_06.txt, part1/part1_maxrand_07.txt, part1/part1_maxrand_08.txt, part1/part1_maxrand_09.txt, part1/part1_maxrand_10.txt, part1/part1_maxrand_11.txt, part1/part1_maxrand_12.txt, part1/part1_maxrand_13.txt, part1/part1_maxrand_14.txt, part1/part1_rand1_00.txt, part1/part1_rand1_01.txt, part1/part1_rand1_02.txt, part1/part1_rand1_03.txt, part1/part1_rand2_00.txt, part1/part1_rand2_01.txt, part1/part1_rand2_02.txt, part1/part1_rand2_03.txt, part1/part1_rand2_04.txt, part1/part1_rand2_05.txt, part1/part1_rand2_06.txt, part1/part1_rand2_07.txt, part1/part1_rand2_08.txt, part1/part1_rand2_09.txt
part2 part2/part2_00_sample_02.txt, part2/part2_00_sample_03.txt, part2/part2_maxrand_00.txt, part2/part2_maxrand_01.txt, part2/part2_maxrand_02.txt, part2/part2_maxrand_03.txt, part2/part2_maxrand_04.txt, part2/part2_maxrand_05.txt, part2/part2_maxrand_06.txt, part2/part2_maxrand_07.txt, part2/part2_maxrand_08.txt, part2/part2_maxrand_09.txt, part2/part2_maxrand_10.txt, part2/part2_maxrand_11.txt, part2/part2_maxrand_12.txt, part2/part2_maxrand_13.txt, part2/part2_maxrand_14.txt, part2/part2_rand1_00.txt, part2/part2_rand1_01.txt, part2/part2_rand1_02.txt, part2/part2_rand1_03.txt, part2/part2_rand2_00.txt, part2/part2_rand2_01.txt, part2/part2_rand2_02.txt, part2/part2_rand2_03.txt, part2/part2_rand2_04.txt, part2/part2_rand2_05.txt, part2/part2_rand2_06.txt, part2/part2_rand2_07.txt, part2/part2_rand2_08.txt, part2/part2_rand2_09.txt
part3 part1/part1_00_sample_00.txt, part1/part1_00_sample_01.txt, part1/part1_maxrand_00.txt, part1/part1_maxrand_01.txt, part1/part1_maxrand_02.txt, part1/part1_maxrand_03.txt, part1/part1_maxrand_04.txt, part1/part1_maxrand_05.txt, part1/part1_maxrand_06.txt, part1/part1_maxrand_07.txt, part1/part1_maxrand_08.txt, part1/part1_maxrand_09.txt, part1/part1_maxrand_10.txt, part1/part1_maxrand_11.txt, part1/part1_maxrand_12.txt, part1/part1_maxrand_13.txt, part1/part1_maxrand_14.txt, part1/part1_rand1_00.txt, part1/part1_rand1_01.txt, part1/part1_rand1_02.txt, part1/part1_rand1_03.txt, part1/part1_rand2_00.txt, part1/part1_rand2_01.txt, part1/part1_rand2_02.txt, part1/part1_rand2_03.txt, part1/part1_rand2_04.txt, part1/part1_rand2_05.txt, part1/part1_rand2_06.txt, part1/part1_rand2_07.txt, part1/part1_rand2_08.txt, part1/part1_rand2_09.txt, part2/part2_00_sample_02.txt, part2/part2_00_sample_03.txt, part2/part2_maxrand_00.txt, part2/part2_maxrand_01.txt, part2/part2_maxrand_02.txt, part2/part2_maxrand_03.txt, part2/part2_maxrand_04.txt, part2/part2_maxrand_05.txt, part2/part2_maxrand_06.txt, part2/part2_maxrand_07.txt, part2/part2_maxrand_08.txt, part2/part2_maxrand_09.txt, part2/part2_maxrand_10.txt, part2/part2_maxrand_11.txt, part2/part2_maxrand_12.txt, part2/part2_maxrand_13.txt, part2/part2_maxrand_14.txt, part2/part2_rand1_00.txt, part2/part2_rand1_01.txt, part2/part2_rand1_02.txt, part2/part2_rand1_03.txt, part2/part2_rand2_00.txt, part2/part2_rand2_01.txt, part2/part2_rand2_02.txt, part2/part2_rand2_03.txt, part2/part2_rand2_04.txt, part2/part2_rand2_05.txt, part2/part2_rand2_06.txt, part2/part2_rand2_07.txt, part2/part2_rand2_08.txt, part2/part2_rand2_09.txt, part3/part3_maxrand_00.txt, part3/part3_maxrand_01.txt, part3/part3_maxrand_02.txt, part3/part3_maxrand_03.txt, part3/part3_maxrand_04.txt, part3/part3_maxrand_05.txt, part3/part3_maxrand_06.txt, part3/part3_maxrand_07.txt, part3/part3_maxrand_08.txt, part3/part3_maxrand_09.txt, part3/part3_maxrand_10.txt, part3/part3_maxrand_11.txt, part3/part3_maxrand_12.txt, part3/part3_maxrand_13.txt, part3/part3_maxrand_14.txt, part3/part3_rand1_00.txt, part3/part3_rand1_01.txt, part3/part3_rand1_02.txt, part3/part3_rand1_03.txt, part3/part3_rand2_00.txt, part3/part3_rand2_01.txt, part3/part3_rand2_02.txt, part3/part3_rand2_03.txt, part3/part3_rand2_04.txt, part3/part3_rand2_05.txt, part3/part3_rand2_06.txt, part3/part3_rand2_07.txt, part3/part3_rand2_08.txt, part3/part3_rand2_09.txt
Case Name Status Exec Time Memory
part1/part1_00_sample_00.txt AC 78 ms 1020 KB
part1/part1_00_sample_01.txt AC 76 ms 1052 KB
part1/part1_maxrand_00.txt AC 140 ms 1012 KB
part1/part1_maxrand_01.txt AC 139 ms 1048 KB
part1/part1_maxrand_02.txt AC 141 ms 1048 KB
part1/part1_maxrand_03.txt AC 138 ms 920 KB
part1/part1_maxrand_04.txt AC 139 ms 1016 KB
part1/part1_maxrand_05.txt AC 140 ms 1016 KB
part1/part1_maxrand_06.txt AC 140 ms 1020 KB
part1/part1_maxrand_07.txt AC 138 ms 948 KB
part1/part1_maxrand_08.txt AC 138 ms 1036 KB
part1/part1_maxrand_09.txt AC 139 ms 1040 KB
part1/part1_maxrand_10.txt AC 140 ms 1048 KB
part1/part1_maxrand_11.txt AC 138 ms 1044 KB
part1/part1_maxrand_12.txt AC 139 ms 1048 KB
part1/part1_maxrand_13.txt AC 139 ms 1040 KB
part1/part1_maxrand_14.txt AC 138 ms 1032 KB
part1/part1_rand1_00.txt AC 48 ms 1036 KB
part1/part1_rand1_01.txt AC 30 ms 1044 KB
part1/part1_rand1_02.txt AC 56 ms 1036 KB
part1/part1_rand1_03.txt AC 63 ms 924 KB
part1/part1_rand2_00.txt AC 116 ms 1072 KB
part1/part1_rand2_01.txt AC 86 ms 1040 KB
part1/part1_rand2_02.txt AC 130 ms 1040 KB
part1/part1_rand2_03.txt AC 140 ms 1040 KB
part1/part1_rand2_04.txt AC 92 ms 1044 KB
part1/part1_rand2_05.txt AC 103 ms 1036 KB
part1/part1_rand2_06.txt AC 105 ms 1040 KB
part1/part1_rand2_07.txt AC 83 ms 1036 KB
part1/part1_rand2_08.txt AC 84 ms 1032 KB
part1/part1_rand2_09.txt AC 90 ms 1036 KB
part2/part2_00_sample_02.txt AC 77 ms 1036 KB
part2/part2_00_sample_03.txt AC 79 ms 1040 KB
part2/part2_maxrand_00.txt AC 133 ms 1040 KB
part2/part2_maxrand_01.txt AC 123 ms 1044 KB
part2/part2_maxrand_02.txt AC 128 ms 1040 KB
part2/part2_maxrand_03.txt AC 127 ms 1036 KB
part2/part2_maxrand_04.txt AC 127 ms 1044 KB
part2/part2_maxrand_05.txt AC 127 ms 1044 KB
part2/part2_maxrand_06.txt AC 126 ms 1044 KB
part2/part2_maxrand_07.txt AC 126 ms 1044 KB
part2/part2_maxrand_08.txt AC 127 ms 1036 KB
part2/part2_maxrand_09.txt AC 128 ms 1036 KB
part2/part2_maxrand_10.txt AC 131 ms 960 KB
part2/part2_maxrand_11.txt AC 128 ms 1036 KB
part2/part2_maxrand_12.txt AC 128 ms 1044 KB
part2/part2_maxrand_13.txt AC 126 ms 1040 KB
part2/part2_maxrand_14.txt AC 128 ms 1036 KB
part2/part2_rand1_00.txt AC 48 ms 1044 KB
part2/part2_rand1_01.txt AC 53 ms 1048 KB
part2/part2_rand1_02.txt AC 48 ms 1036 KB
part2/part2_rand1_03.txt AC 59 ms 1044 KB
part2/part2_rand2_00.txt AC 114 ms 1024 KB
part2/part2_rand2_01.txt AC 115 ms 1044 KB
part2/part2_rand2_02.txt AC 109 ms 1036 KB
part2/part2_rand2_03.txt AC 124 ms 1040 KB
part2/part2_rand2_04.txt AC 109 ms 1040 KB
part2/part2_rand2_05.txt AC 120 ms 1068 KB
part2/part2_rand2_06.txt AC 115 ms 1040 KB
part2/part2_rand2_07.txt AC 124 ms 1044 KB
part2/part2_rand2_08.txt AC 126 ms 1040 KB
part2/part2_rand2_09.txt AC 118 ms 952 KB
part3/part3_maxrand_00.txt AC 143 ms 1040 KB
part3/part3_maxrand_01.txt AC 140 ms 1036 KB
part3/part3_maxrand_02.txt AC 142 ms 1032 KB
part3/part3_maxrand_03.txt AC 137 ms 1044 KB
part3/part3_maxrand_04.txt AC 142 ms 1048 KB
part3/part3_maxrand_05.txt AC 145 ms 1036 KB
part3/part3_maxrand_06.txt AC 140 ms 1048 KB
part3/part3_maxrand_07.txt AC 140 ms 1044 KB
part3/part3_maxrand_08.txt AC 142 ms 1044 KB
part3/part3_maxrand_09.txt AC 139 ms 1040 KB
part3/part3_maxrand_10.txt AC 139 ms 1036 KB
part3/part3_maxrand_11.txt AC 140 ms 1024 KB
part3/part3_maxrand_12.txt AC 140 ms 1032 KB
part3/part3_maxrand_13.txt AC 143 ms 1052 KB
part3/part3_maxrand_14.txt AC 140 ms 1044 KB
part3/part3_rand1_00.txt AC 55 ms 1024 KB
part3/part3_rand1_01.txt AC 54 ms 1080 KB
part3/part3_rand1_02.txt AC 49 ms 1044 KB
part3/part3_rand1_03.txt AC 66 ms 1040 KB
part3/part3_rand2_00.txt AC 126 ms 1036 KB
part3/part3_rand2_01.txt AC 126 ms 1044 KB
part3/part3_rand2_02.txt AC 115 ms 1044 KB
part3/part3_rand2_03.txt AC 128 ms 1040 KB
part3/part3_rand2_04.txt AC 121 ms 964 KB
part3/part3_rand2_05.txt AC 128 ms 1044 KB
part3/part3_rand2_06.txt AC 124 ms 1040 KB
part3/part3_rand2_07.txt AC 129 ms 1040 KB
part3/part3_rand2_08.txt AC 150 ms 1036 KB
part3/part3_rand2_09.txt AC 127 ms 916 KB