結果

問題 No.2684 折々の色
ユーザー nonon
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

#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";
}
0