結果
問題 |
No.2684 折々の色
|
ユーザー |
|
提出日時 | 2024-03-20 23:17:15 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 714 ms / 2,000 ms |
コード長 | 1,499 bytes |
コンパイル時間 | 1,170 ms |
コンパイル使用メモリ | 89,348 KB |
最終ジャッジ日時 | 2025-02-20 10:05:41 |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 56 |
ソースコード
#include<iostream> #include<algorithm> #include<vector> #include<set> using namespace std; using ll=long long; #define all(v) v.begin(),v.end() #define rall(v) v.rbegin(),v.rend() template<class T> bool chmax(T &a, T b){if (a < b){a = b;return true;} else return false;} template<class T> bool chmin(T &a, T b){if (a > b){a = b;return true;} else return false;} int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int N,M; cin>>N>>M; vector<ll>X(M); for(int i=0;i<M;i++)cin>>X[i]; vector C(N,vector<ll>(M)); vector<int>T(N); for(int i=0;i<N;i++){ for(int j=0;j<M;j++){ cin>>C[i][j]; } cin>>T[i]; } for(int i=0;i<N;i++){ if(T[i]==100){ if(X==C[i]){ cout<<"Yes\n"; return 0; } } } for(int i=0;i<N;i++){ for(int j=0;j<M;j++){ C[i][j]*=T[i]; } } multiset<vector<ll>>se; for(int i=0;i<N;i++)se.insert(C[i]); for(int i=0;i<N;i++){ if(T[i]==100)continue; vector<ll>W(M); bool ok=true; for(int j=0;j<M;j++){ if((10000*X[j]-100*C[i][j])%(100-T[i])!=0){ ok=false; break; } W[j]=(10000*X[j]-100*C[i][j])/(100-T[i]); } se.erase(se.find(C[i])); if(ok&&se.count(W)){ cout<<"Yes\n"; return 0; } se.insert(C[i]); } cout<<"No\n"; }