Submission #2150669
Source Code Expand
#include<bits/stdc++.h> using namespace std; using Int = long long; const Int MOD=1e9+9; //<- alert!!! typedef vector<Int> arr; typedef vector<arr> mat; inline arr mul(const mat &a,arr &b,Int mod){ arr res(b.size(),0); for(Int i=0;i<(Int)b.size();i++) for(Int j=0;j<(Int)a[i].size();j++) (res[i]+=a[i][j]*b[j])%=mod; return res; } inline mat mul(const mat &a,const mat &b,Int mod){ mat res(a.size(),arr(b[0].size(),0)); for(Int i=0;i<(Int)a.size();i++) for(Int j=0;j<(Int)b[0].size();j++) for(Int k=0;k<(Int)b.size();k++) (res[i][j]+=a[i][k]*b[k][j])%=mod; return res; } inline mat mat_pow(mat a,Int n,Int mod){ mat res(a); for(Int i=0;i<(Int)a.size();i++) for(Int j=0;j<(Int)a[i].size();j++) res[i][j]=(i==j); while(n){ if(n&1) res=mul(a,res,mod); a=mul(a,a,mod); n>>=1; } return res; } //INSERT ABOVE HERE signed main(){ Int n; cin>>n; mat A(n,arr(n,0)); for(Int i=0;i<n;i++) for(Int j=0;j<n;j++) cin>>A[i][j]; mat B(n,arr(n,0)); for(Int i=0;i<n;i++) for(Int j=0;j<n;j++) cin>>B[i][j]; mat C(n,arr(n,0)); for(Int i=0;i<n;i++) for(Int j=0;j<n;j++) cin>>C[i][j]; for(Int i=0;i<n;i++){ for(Int j=0;j<n;j++){ while(A[i][j]<0) A[i][j]+=MOD; while(B[i][j]<0) B[i][j]+=MOD; while(C[i][j]<0) C[i][j]+=MOD; } } auto start=clock(); random_device rd; mt19937 mt(rd()); while(double(clock()-start)/CLOCKS_PER_SEC<4.0){ arr x(n); for(Int i=0;i<n;i++) x[i]=mt()%MOD; auto y=mul(B,x,MOD); auto z=mul(A,y,MOD); auto p=mul(C,x,MOD); for(Int i=0;i<n;i++){ if(z[i]!=p[i]){ //cout<<z[i]<<" "<<p[i]<<endl; cout<<"NO"<<endl; return 0; } } } cout<<"YES"<<endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - A mul B Problem |
User | beet |
Language | C++14 (GCC 5.4.1) |
Score | 100 |
Code Size | 1840 Byte |
Status | AC |
Exec Time | 4992 ms |
Memory | 25856 KB |
Judge Result
Set Name | Partial 1 | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 99 / 99 | 1 / 1 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Partial 1 | 0_00_sample_00, 0_10_Random_00_0001, 0_20_Same_00_0001, 0_20_Same_01_0001, 0_20_Same_02_0001, 0_20_Same_03_0001, 0_20_Same_04_0001, 0_20_Same_05_0001, 0_20_Same_06_0001, 0_20_Same_07_0001, 0_20_Same_08_0001, 0_20_Same_09_0001 |
All | 0_00_sample_00, 0_10_Random_00_0001, 0_20_Same_00_0001, 0_20_Same_01_0001, 0_20_Same_02_0001, 0_20_Same_03_0001, 0_20_Same_04_0001, 0_20_Same_05_0001, 0_20_Same_06_0001, 0_20_Same_07_0001, 0_20_Same_08_0001, 0_20_Same_09_0001, 1_00_sample_01, 1_00_sample_02, 1_10_Random_01_0010, 1_10_Random_02_0010, 1_10_Random_03_0005, 1_10_Random_04_0038, 1_10_Random_05_0036, 1_10_Random_06_0021, 1_10_Random_07_0507, 1_10_Random_08_0922, 1_10_Random_09_0182, 1_10_Random_10_0923, 1_10_Random_11_0606, 1_10_Random_12_0921, 1_20_Same_10_0002, 1_20_Same_11_0003, 1_20_Same_12_0006, 1_20_Same_13_0077, 1_20_Same_14_0024, 1_20_Same_15_0082, 1_20_Same_16_0208, 1_20_Same_17_0497, 1_20_Same_18_0907, 1_20_Same_19_0126, 1_20_Same_20_0106, 1_20_Same_21_0756, 1_20_Same_22_1000, 1_20_Same_23_1000, 1_20_Same_24_1000, 1_20_Same_25_1000, 1_20_Same_26_1000, 1_30_Yes_00_0004, 1_30_Yes_01_0003, 1_30_Yes_02_0003, 1_30_Yes_03_0031, 1_30_Yes_04_0028, 1_30_Yes_05_0080, 1_30_Yes_06_0965, 1_30_Yes_07_0750, 1_30_Yes_08_0842, 1_30_Yes_09_0525, 1_30_Yes_10_0160, 1_30_Yes_11_0497, 1_30_Yes_12_1000, 1_30_Yes_13_1000, 1_30_Yes_14_1000, 1_30_Yes_15_1000, 1_30_Yes_16_1000, 1_40_Zero_00_0004, 1_40_Zero_01_0008, 1_40_Zero_02_0008, 1_40_Zero_03_0094, 1_40_Zero_04_0080, 1_40_Zero_05_0023, 1_40_Zero_06_0514, 1_40_Zero_07_0167, 1_40_Zero_08_0564, 1_40_Zero_09_0561, 1_40_Zero_10_0182, 1_40_Zero_11_0735 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
0_00_sample_00 | AC | 4002 ms | 256 KB |
0_10_Random_00_0001 | AC | 1 ms | 256 KB |
0_20_Same_00_0001 | AC | 4002 ms | 256 KB |
0_20_Same_01_0001 | AC | 4002 ms | 256 KB |
0_20_Same_02_0001 | AC | 4002 ms | 256 KB |
0_20_Same_03_0001 | AC | 4001 ms | 256 KB |
0_20_Same_04_0001 | AC | 1 ms | 256 KB |
0_20_Same_05_0001 | AC | 4001 ms | 256 KB |
0_20_Same_06_0001 | AC | 1 ms | 256 KB |
0_20_Same_07_0001 | AC | 1 ms | 256 KB |
0_20_Same_08_0001 | AC | 1 ms | 256 KB |
0_20_Same_09_0001 | AC | 4001 ms | 256 KB |
1_00_sample_01 | AC | 1 ms | 256 KB |
1_00_sample_02 | AC | 4001 ms | 256 KB |
1_10_Random_01_0010 | AC | 1 ms | 256 KB |
1_10_Random_02_0010 | AC | 1 ms | 256 KB |
1_10_Random_03_0005 | AC | 1 ms | 256 KB |
1_10_Random_04_0038 | AC | 2 ms | 256 KB |
1_10_Random_05_0036 | AC | 2 ms | 256 KB |
1_10_Random_06_0021 | AC | 1 ms | 256 KB |
1_10_Random_07_0507 | AC | 185 ms | 6400 KB |
1_10_Random_08_0922 | AC | 613 ms | 20352 KB |
1_10_Random_09_0182 | AC | 25 ms | 1024 KB |
1_10_Random_10_0923 | AC | 417 ms | 20352 KB |
1_10_Random_11_0606 | AC | 181 ms | 8960 KB |
1_10_Random_12_0921 | AC | 417 ms | 20224 KB |
1_20_Same_10_0002 | AC | 4002 ms | 256 KB |
1_20_Same_11_0003 | AC | 1 ms | 256 KB |
1_20_Same_12_0006 | AC | 1 ms | 256 KB |
1_20_Same_13_0077 | AC | 6 ms | 384 KB |
1_20_Same_14_0024 | AC | 2 ms | 256 KB |
1_20_Same_15_0082 | AC | 6 ms | 384 KB |
1_20_Same_16_0208 | AC | 4038 ms | 1280 KB |
1_20_Same_17_0497 | AC | 210 ms | 6144 KB |
1_20_Same_18_0907 | AC | 705 ms | 19712 KB |
1_20_Same_19_0126 | AC | 4015 ms | 640 KB |
1_20_Same_20_0106 | AC | 4011 ms | 512 KB |
1_20_Same_21_0756 | AC | 486 ms | 13696 KB |
1_20_Same_22_1000 | AC | 542 ms | 23808 KB |
1_20_Same_23_1000 | AC | 549 ms | 23808 KB |
1_20_Same_24_1000 | AC | 4536 ms | 23808 KB |
1_20_Same_25_1000 | AC | 4933 ms | 25856 KB |
1_20_Same_26_1000 | AC | 4992 ms | 23808 KB |
1_30_Yes_00_0004 | AC | 4004 ms | 256 KB |
1_30_Yes_01_0003 | AC | 4004 ms | 256 KB |
1_30_Yes_02_0003 | AC | 4005 ms | 256 KB |
1_30_Yes_03_0031 | AC | 4005 ms | 256 KB |
1_30_Yes_04_0028 | AC | 4005 ms | 256 KB |
1_30_Yes_05_0080 | AC | 4009 ms | 384 KB |
1_30_Yes_06_0965 | AC | 4793 ms | 22144 KB |
1_30_Yes_07_0750 | AC | 4475 ms | 13568 KB |
1_30_Yes_08_0842 | AC | 4598 ms | 19072 KB |
1_30_Yes_09_0525 | AC | 4234 ms | 6784 KB |
1_30_Yes_10_0160 | AC | 4024 ms | 896 KB |
1_30_Yes_11_0497 | AC | 4212 ms | 6144 KB |
1_30_Yes_12_1000 | AC | 4543 ms | 23936 KB |
1_30_Yes_13_1000 | AC | 4549 ms | 23808 KB |
1_30_Yes_14_1000 | AC | 4542 ms | 25856 KB |
1_30_Yes_15_1000 | AC | 4914 ms | 23808 KB |
1_30_Yes_16_1000 | AC | 4990 ms | 25856 KB |
1_40_Zero_00_0004 | AC | 4004 ms | 256 KB |
1_40_Zero_01_0008 | AC | 4004 ms | 256 KB |
1_40_Zero_02_0008 | AC | 4002 ms | 256 KB |
1_40_Zero_03_0094 | AC | 4008 ms | 512 KB |
1_40_Zero_04_0080 | AC | 4006 ms | 384 KB |
1_40_Zero_05_0023 | AC | 4002 ms | 256 KB |
1_40_Zero_06_0514 | AC | 4224 ms | 6528 KB |
1_40_Zero_07_0167 | AC | 4025 ms | 896 KB |
1_40_Zero_08_0564 | AC | 4270 ms | 7808 KB |
1_40_Zero_09_0561 | AC | 4177 ms | 7680 KB |
1_40_Zero_10_0182 | AC | 4029 ms | 1024 KB |
1_40_Zero_11_0735 | AC | 358 ms | 13056 KB |