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
AC × 12
AC × 72
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