結果
| 問題 |
No.2684 折々の色
|
| コンテスト | |
| ユーザー |
tute7627
|
| 提出日時 | 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;
}
}
tute7627