結果
問題 |
No.497 入れ子の箱
|
ユーザー |
![]() |
提出日時 | 2025-02-22 16:54:05 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 993 bytes |
コンパイル時間 | 3,695 ms |
コンパイル使用メモリ | 279,568 KB |
実行使用メモリ | 13,764 KB |
最終ジャッジ日時 | 2025-02-22 16:54:16 |
合計ジャッジ時間 | 10,684 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | TLE * 1 -- * 28 |
ソースコード
#include<bits/stdc++.h> #define int long long using namespace std; struct node{ int x,y,z; }box[1010]; struct edge{ int to,next; }a[1000010]; int head[1000010],cnt,ans; bool f[1010]; void add(int u,int v) { a[++cnt].to=v; a[cnt].next=head[u]; head[u]=cnt++; } bool cmp(node x,node y) { return x.x<y.x; } bool check(node x,node y) { if(x.x<y.x&&x.y<y.y&&x.z<y.z) return 1; return 0; } void dfs(int u,int tot) { f[u]=1; ans=max(ans,tot); for(int i=head[u];i;i=a[i].next) dfs(a[i].to,tot+1); } signed main() { int n,x,y,z; cin>>n; for(int i=1;i<=n;i++) { cin>>box[i].x>>box[i].y>>box[i].z; x=min(min(box[i].x,box[i].y),box[i].z); z=max(max(box[i].x,box[i].y),box[i].z); y=box[i].x+box[i].y+box[i].z-x-z; box[i].x=x; box[i].y=y; box[i].z=z; } sort(box+1,box+n+1,cmp); for(int i=1;i<=n;i++) { for(int j=i+1;j<=n;j++) { if(check(box[i],box[j])) add(i,j); } } for(int i=1;i<=n;i++) { if(!f[i]) dfs(i,1); } cout<<ans<<endl; return 0; }