比赛 |
2025.1.18 |
评测结果 |
AAATTTTEEEEE |
题目名称 |
Help Yourself(Gold) |
最终得分 |
25 |
用户昵称 |
flyfree |
运行时间 |
13.036 s |
代码语言 |
C++ |
内存使用 |
3.07 MiB |
提交时间 |
2025-01-18 10:02:27 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define MAXN 1010
#define mod 1000000007
// By flyfreemrn
inline ll read(){
ll x=0,f=1;
char c=getchar();
while(c<'0'||c>'9'){
if(c=='-')f=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
inline void write(ll x){
if(x>9)write(x/10);
putchar(x%10+'0');
}
//struct node_bit{
// ll s[MAXN],siz;
// ll lowbit(ll x){
// return x&(-x);
// }
// void add(ll pos,ll val){
// while(pos<=siz){
// s[pos]=(s[pos]+val+mod)%mod;
// pos+=lowbit(pos);
// }
// }
// ll find(ll pos){
// ll res=0;
// while(pos>0){
// res=(s[pos]+res+mod)%mod;
// pos-=lowbit(pos);
// }
// return res;
// }
//}bit[MAXN];
//struct node_line{
// ll l,r;
//}line[MAXN];
//bool cmp(node_line a,node_line b){
// return a.l<b.l;
//}
//ll dp[MAXN][MAXN],nxt[MAXN];
//ll n,ans;
//int main(){
// n=read();
// for(int i=1;i<=n;i++)bit[i].siz=n;
// bit[1].add(1,1);
// for(int i=1;i<=n;i++)line[i].l=read(),line[i].r=read();
// sort(line+1,line+1+n,cmp);
// for(int i=1;i<=n;i++){
// for(int j=i+1;j<=n;j++){
// if(line[j].l>line[i].r){
// nxt[i]=j;
// break;
// }
// }
// }
// for(int c=1;c<=n;c++){
// for(int j=1;j<=n;j++){
// ll _ans=bit[c].find(j);
// bit[c].add(j+1,_ans);
// ans=(ans+_ans*c%mod+mod)%mod;
// cout<<c<<" "<<j<<" "<<_ans<<endl;
// if(nxt[j]){
// bit[c+1].add(nxt[j],_ans);
// bit[c].add(nxt[j],-_ans);
// }
// }
// }
// cout<<ans;
// return 0;
//}
struct node_line{
ll l,r;
}line[MAXN];
bool cmp(node_line a,node_line b){
return a.l<b.l;
}
ll ans,n;
void dfs(ll id,ll r,ll k){
if(id>n){
ans=(ans+k)%mod;
return;
}
dfs(id+1,r,k);
if(line[id].l>r)dfs(id+1,line[id].r,k+1);
else dfs(id+1,max(line[id].r,r),k);
}
int main(){
freopen("usaco_Feb_help.in","r",stdin);
freopen("usaco_Feb_help.out","w",stdout);
n=read();
for(int i=1;i<=n;i++)line[i].l=read(),line[i].r=read();
sort(line+1,line+1+n,cmp);
dfs(1,0,0);
cout<<ans<<endl;
}