結果
問題 | No.497 入れ子の箱 |
ユーザー |
|
提出日時 | 2017-03-24 22:45:21 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 21 ms / 5,000 ms |
コード長 | 1,374 bytes |
コンパイル時間 | 1,830 ms |
コンパイル使用メモリ | 175,516 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-05 22:11:58 |
合計ジャッジ時間 | 3,015 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 29 |
ソースコード
#include "bits/stdc++.h"using namespace std;#define FOR(i,j,k) for(int (i)=(j);(i)<(int)(k);++(i))#define rep(i,j) FOR(i,0,j)#define each(x,y) for(auto &(x):(y))#define mp make_pair#define mt make_tuple#define all(x) (x).begin(),(x).end()#define debug(x) cout<<#x<<": "<<(x)<<endl#define smax(x,y) (x)=max((x),(y))#define smin(x,y) (x)=min((x),(y))#define MEM(x,y) memset((x),(y),sizeof (x))#define sz(x) (int)(x).size()#define pb push_backtypedef long long ll;typedef pair<int, int> pii;typedef vector<int> vi;typedef vector<ll> vll;int f(int xx, int yy, int zz, int x, int y, int z) {static int v[3];v[0] = xx, v[1] = yy, v[2] = zz;sort(v, v + 3);do {if (v[0] < x&&v[1] < y&&v[2] < z) {return 1;}} while (next_permutation(v, v + 3));return 0;}struct P {int x, y, z;double s;};bool operator<(P p, P q) {return p.s < q.s;}int main(){ios::sync_with_stdio(false);cin.tie(0);int N;cin >> N;vector<P> p(N);rep(i, N) {cin >> p[i].x >> p[i].y >> p[i].z;p[i].s = (double)p[i].x*p[i].y*p[i].z;}sort(all(p));vi dp(N, 1);rep(i, N)FOR(j, i + 1, N) {if (f(p[i].x, p[i].y, p[i].z, p[j].x, p[j].y, p[j].z)) {smax(dp[j], dp[i] + 1);}}cout << *max_element(all(dp)) << endl;}