結果
問題 | No.497 入れ子の箱 |
ユーザー |
![]() |
提出日時 | 2017-09-01 17:33:43 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 6 ms / 5,000 ms |
コード長 | 1,003 bytes |
コンパイル時間 | 1,989 ms |
コンパイル使用メモリ | 167,800 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-11-06 17:24:27 |
合計ジャッジ時間 | 2,850 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 29 |
ソースコード
#include <bits/stdc++.h> using namespace std; typedef long long ll; struct box { ll X; ll Y; ll Z; int num; }; bool asc(const box& left, const box& right) { if (left.X != right.X) return left.X > right.X; else if (left.Y != right.Y) return left.Y > right.Y; else return left.Z > right.Z; } bool con(box cld, box prnt) { return cld.X < prnt.X && cld.Y < prnt.Y && cld.Z < prnt.Z; } int main(void) { int ans = 1; ll N; vector<ll> len(3); vector<box> bxs; cin >> N; for (int i=0; i<N; i++) { cin >> len[0] >> len[1] >> len[2]; sort(len.begin(), len.end()); bxs.push_back({len[0],len[1],len[2],1}); } sort(bxs.begin(), bxs.end(), asc); for (int i=0; i<N; i++) { for (int j=i+1; j<N; j++) { if(con(bxs[j], bxs[i])) { bxs[j].num = max(bxs[j].num, bxs[i].num+1); ans = max(ans, bxs[j].num); } } } cout << ans << endl; return 0; }