結果

問題 No.497 入れ子の箱
ユーザー vjudge1
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

#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;
}

0