結果
問題 |
No.2684 折々の色
|
ユーザー |
![]() |
提出日時 | 2024-03-21 01:10:12 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 1,503 ms / 2,000 ms |
コード長 | 2,467 bytes |
コンパイル時間 | 2,633 ms |
コンパイル使用メモリ | 207,584 KB |
最終ジャッジ日時 | 2025-02-20 10:24:15 |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 56 |
ソースコード
#include <bits/stdc++.h> using namespace std; void fast_io() { ios::sync_with_stdio(false); std::cin.tie(nullptr); } int main() { fast_io(); int n, m; cin >> n >> m; vector<int> x(m); for (int i = 0; i < m; i++) { cin >> x[i]; } vector<vector<int>> c(n, vector<int>(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 && c[i] == x) { cout << "Yes\n"; return 0; } } set<array<pair<int, int>, 10>> st; for (int i = 0; i < n; i++) { if (t[i] != 100) { array<pair<int, int>, 10> need; for (int j = 0; j < m; j++) { int a = 100 * x[j] - t[i] * c[i][j]; int b = 100 - t[i]; int g = gcd(a, b); if (a < 0) { a = -a; b = -b; } need[j] = {a / g, b / g}; } if (st.count(need)) { cout << "Yes\n"; return 0; } } array<pair<int, int>, 10> data; for (int j = 0; j < m; j++) { int a = t[i] * c[i][j]; int b = 100; int g = gcd(a, b); if (a < 0) { a = -a; b = -b; } data[j] = {a / g, b / g}; } st.insert(data); } st.clear(); for (int i = n - 1; i >= 0; i--) { if (t[i] != 100) { array<pair<int, int>, 10> need; for (int j = 0; j < m; j++) { int a = 100 * x[j] - t[i] * c[i][j]; int b = 100 - t[i]; int g = gcd(a, b); if (a < 0) { a = -a; b = -b; } need[j] = {a / g, b / g}; } if (st.count(need)) { cout << "Yes\n"; return 0; } } array<pair<int, int>, 10> data; for (int j = 0; j < m; j++) { int a = t[i] * c[i][j]; int b = 100; int g = gcd(a, b); if (a < 0) { a = -a; b = -b; } data[j] = {a / g, b / g}; } st.insert(data); } cout << "No\n"; }