Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
29756 | hi_hi | 【J】T3 | C++ | 运行超时 | 20 | 2000 MS | 452 KB | 789 | 2024-05-26 18:35:07 |
#include<bits/stdc++.h> using namespace std; long long n,vis[6005],ans,ji[6005]; struct pt{ long long x,y; }a[6005]; bool cmp(pt a,pt b){ return a.y>b.y; } inline int jianzhi(long long deep){ if(deep==0)return 0; if(deep<3)return 1; if(a[ji[deep]].x>a[ji[deep-2]].x && a[ji[deep]].x<a[ji[deep-1]].x || a[ji[deep]].x>a[ji[deep-1]].x && a[ji[deep]].x<a[ji[deep-2]].x)return 1; return 0; } void dfs(long long deep){ for(int i=ji[deep]+1;i<=n;i++){ if(vis[i]==0){ ji[deep+1]=i; if(jianzhi(deep+1)){ ans++; vis[i]=1; dfs(deep+1); vis[i]=0; ans%=1000000007; } } } } int main(){ scanf("%lld",&n); for(int i=1;i<=n;i++){ scanf("%lld %lld",&a[i].x,&a[i].y); } sort(a+1,a+n+1,cmp); dfs(0); printf("%lld",ans); }