結果
| 問題 |
No.497 入れ子の箱
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2017-03-24 23:04:03 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 50 ms / 5,000 ms |
| コード長 | 1,787 bytes |
| コンパイル時間 | 950 ms |
| コンパイル使用メモリ | 102,600 KB |
| 実行使用メモリ | 8,960 KB |
| 最終ジャッジ日時 | 2024-07-05 23:11:15 |
| 合計ジャッジ時間 | 3,055 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 29 |
ソースコード
#include<map>
#include<set>
#include<list>
#include<cmath>
#include<queue>
#include<stack>
#include<cstdio>
#include<string>
#include<vector>
#include<complex>
#include<cstdlib>
#include<cstring>
#include<numeric>
#include<sstream>
#include<iostream>
#include<algorithm>
#include<functional>
#define mp make_pair
#define pb push_back
#define all(x) (x).begin(),(x).end()
#define YES() printf("YES\n")
#define NO() printf("NO\n")
using namespace std;
#define int long long
//typedef long long ll;
typedef unsigned long long ull;
typedef vector<bool> vb;
typedef vector<int> vi;
typedef vector<vb> vvb;
typedef vector<vi> vvi;
//typedef pair<int,int> P;
const int INF=1e+13;
const double EPS=1e-9;
const int dx[]={1,0,-1,0},dy[]={0,-1,0,1};
bool comp(int x,int y,int z,int xx,int yy,int zz){
int a[] = {x,y,z},b[] = {xx,yy,zz};
sort(a,a + 3);
sort(b,b + 3);
for(int i = 0;i < 3;i++){
if(a[i] >= b[i]) return false;
}
return true;
}
signed main(){
int n,x[1000],y[1000],z[1000],in[1000] = {},cnt[1000] = {};
vector<int> G[1000];
cin >> n;
for(int i = 0;i < n;i++) cin >> x[i] >> y[i] >> z[i];
for(int i = 0;i < n;i++) cnt[i] = 1;
for(int i = 0;i < n;i++){
for(int j = 0;j < n;j++){
if(comp(x[i],y[i],z[i],x[j],y[j],z[j])) {
G[i].push_back(j);
in[j]++;
}
}
}
queue<int> que;
for(int i = 0;i < n;i++){
if(in[i] == 0) {
que.push(i);
cnt[i] = 1;
}
}
while(!que.empty()){
int v = que.front();que.pop();
for(int i = 0;i < G[v].size();i++){
int to = G[v][i];
cnt[to] = max(cnt[to],cnt[v] + 1);
in[to]--;
if(in[to] == 0){
que.push(to);
}
}
}
int ma = 0;
for(int i = 0;i < n;i++) ma = max(ma,cnt[i]);
cout << ma << endl;
return 0;
}