結果
問題 |
No.2684 折々の色
|
ユーザー |
![]() |
提出日時 | 2024-03-20 23:24:42 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 715 ms / 2,000 ms |
コード長 | 1,287 bytes |
コンパイル時間 | 1,843 ms |
コンパイル使用メモリ | 203,564 KB |
最終ジャッジ日時 | 2025-02-20 10:08:00 |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 56 |
ソースコード
#include<bits/stdc++.h> #include<atcoder/math> using namespace std; int N,M; long T[2<<17]; array<long,10>X,C[2<<17]; multiset<array<long,10>>S; bool fn[2<<17]; const long mod=998244259; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin>>N>>M; for(int i=0;i<M;i++)cin>>X[i]; for(int i=0;i<N;i++) { for(int j=0;j<M;j++)cin>>C[i][j]; cin>>T[i]; if(T[i]==100) { if([&] { for(int j=0;j<M;j++)if(100*X[j]!=T[i]*C[i][j])return 0; return 1; }()) { cout<<"Yes\n"; return 0; } continue; } array<long,10>ar; for(int j=0;j<10;j++) { ar[j]=(10000*X[j]-100*T[i]*C[i][j])%mod; ar[j]*=atcoder::pow_mod(100-T[i],mod-2,mod); ar[j]%=mod; } S.insert(ar); array<long,10>ar2; for(int j=0;j<10;j++)ar2[j]=T[i]*C[i][j]%mod; if(ar==ar2)fn[i]=1; } for(int i=0;i<N;i++)if(!fn[i]) { array<long,10>ar; for(int j=0;j<10;j++)ar[j]=T[i]*C[i][j]%mod; if(S.find(ar)!=S.end()) { cout<<"Yes\n"; return 0; } } cout<<"No\n"; }