結果
| 問題 |
No.497 入れ子の箱
|
| コンテスト | |
| ユーザー |
uzumakiyorumunn
|
| 提出日時 | 2017-06-09 21:14:22 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 24 ms / 5,000 ms |
| コード長 | 1,039 bytes |
| コンパイル時間 | 533 ms |
| コンパイル使用メモリ | 63,428 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-09-22 14:35:10 |
| 合計ジャッジ時間 | 1,869 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 29 |
ソースコード
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
#define NMAX 1000
vector<int> vi[NMAX];
bool use[NMAX];
int memo[NMAX];
int search(int n);
int main(){
int N;
long long x[NMAX],y[NMAX],z[NMAX];
int ans=0;
cin>>N;
for(int i=0;i<N;i++){
cin>>x[i];
cin>>y[i];
cin>>z[i];
}
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
if(i==j) continue;
if((x[i]>x[j]&&y[i]>y[j]&&z[i]>z[j])||(x[i]>x[j]&&y[i]>z[j]&&z[i]>y[j])||(x[i]>y[j]&&y[i]>x[j]&&z[i]>z[j])||(x[i]>y[j]&&y[i]>z[j]&&z[i]>x[j])||(x[i]>z[j]&&y[i]>y[j]&&z[i]>x[j])||(x[i]>z[j]&&y[i]>x[j]&&z[i]>y[j])){
vi[i].push_back(j);
}
}
}
for(int i=0;i<N;i++){
memo[i]=-1;
}
for(int i=0;i<N;i++){
for(int j=0;j<N;j++) use[j]=false;
use[i]=true;
ans=max(ans,search(i));
}
cout<<ans<<endl;
}
int search(int n){
if(memo[n]!=-1) return memo[n];
int c=0;
for(int i=0;i<vi[n].size();i++){
if(!use[vi[n][i]]){
use[vi[n][i]]=true;
c=max(c,search(vi[n][i]));
use[vi[n][i]]=false;
}
}
memo[n]=c+1;
return c+1;
}
uzumakiyorumunn