結果
| 問題 |
No.335 門松宝くじ
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-01-16 00:25:39 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,605 bytes |
| コンパイル時間 | 679 ms |
| コンパイル使用メモリ | 70,440 KB |
| 実行使用メモリ | 13,760 KB |
| 最終ジャッジ日時 | 2024-09-19 19:42:54 |
| 合計ジャッジ時間 | 9,748 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 RE * 1 |
| other | AC * 4 TLE * 2 -- * 4 |
ソースコード
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <utility>
#include <cmath>
using namespace std;
bool isKadomatu(int a, int b, int c) {
if (a == b || b == c || c == a) {
return false;
}
if (max({a, b, c}) == b || min({a, b, c}) == b) {
return true;
}
return false;
}
int calc_maximum(vector<int> &kuji, int idx_x, int idx_y) {
if (idx_x > idx_y) {
swap(idx_x, idx_y);
}
int limit = kuji.size();
int maxi = 0;
for (int i = 0; i < idx_x; i++) {
if (isKadomatu(kuji[i], kuji[idx_x], kuji[idx_y])) {
maxi = max(maxi, max({kuji[i], kuji[idx_x], kuji[idx_y]}));
}
}
for (int i = idx_x + 1; i < idx_y; i++) {
if (isKadomatu(kuji[idx_x], kuji[i], kuji[idx_y])) {
maxi = max(maxi, max({kuji[idx_x], kuji[i], kuji[idx_y]}));
}
}
for (int i = idx_y + 1; i < limit; i++) {
if (isKadomatu(kuji[idx_x], kuji[idx_y], kuji[i])) {
maxi = max(maxi, max({kuji[idx_x], kuji[idx_y], kuji[i]}));
}
}
return maxi;
}
int main() {
int n, m;
cin >> n >> m;
vector<vector<int>> e(m, vector<int>(n, -1));
vector<vector<int>> val2idx(m, vector<int>(n, -1));
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> e[i][j];
val2idx[i][e[i][j]] = j;
}
}
vector<int> total(m, 0);
for (int i = 1; i <= n; i++) {
for (int j = i + 1; j <= n; j++) {
for (int k = 0; k < m; k++) {
total[k] += calc_maximum(e[k], val2idx[k][i], val2idx[k][j]);
}
}
}
int maxi = -1;
int ans = -1;
for (int i = 0; i < m; i++) {
if (maxi < total[i]) {
maxi = total[i];
ans = i;
}
}
cout << ans << endl;
return 0;
}