結果
問題 |
No.2684 折々の色
|
ユーザー |
![]() |
提出日時 | 2024-03-14 21:17:45 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 1,233 ms / 2,000 ms |
コード長 | 1,496 bytes |
コンパイル時間 | 2,123 ms |
コンパイル使用メモリ | 211,820 KB |
最終ジャッジ日時 | 2025-02-20 04:27:54 |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 56 |
ソースコード
#include<bits/stdc++.h> using namespace std; #ifdef LOCAL #include <debug_print.hpp> #define OUT(...) debug_print::multi_print(#__VA_ARGS__, __VA_ARGS__) #else #define OUT(...) (static_cast<void>(0)) #endif int main(){ int N, M; cin >> N >> M; assert(2 <= N && N <= 2e5); assert(1 <= M && M <= 10); vector<int> X(M); for(int i = 0; i < M; i++){ cin >> X[i]; assert(0 <= X[i] && X[i] < (1 << 16)); } vector C(N, vector(M, 0)); vector<int> T(N); set<vector<int>> cst; for(int i = 0; i < N; i++){ for(int j = 0; j < M; j++){ cin >> C[i][j]; assert(0 <= C[i][j] && C[i][j] < (1 << 16)); } cst.insert(C[i]); cin >> T[i]; assert(0 < T[i] && T[i] <= 100); } assert(cst.size() == N); map<vector<int>, int> ctst; for(int i = 0; i < N; i++){ vector<int> ct(M); for(int j = 0; j < M; j++){ ct[j] = C[i][j] * T[i]; } ctst[ct] += 1; } bool ans = false; for(int i = 0; i < N; i++){ if(T[i] == 100){ if(C[i] == X){ ans = true; } continue; } vector<int> ct(M, -1); vector<int> ctm(M, -1); for(int j = 0; j < M; j++){ ctm[j] = C[i][j] * T[i]; ct[j] = 10000 * X[j] - 100 * T[i] * C[i][j]; if(ct[j] % (100 - T[i]) != 0){ ct[j] = -1; } else{ ct[j] /= (100 - T[i]); } } if(ctst[ct] > (ct == ctm)){ ans = true; } } if(ans){ cout << "Yes" << endl; } else{ cout << "No" << endl; } }