Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
39156 baka24 【S】T4 C++ 运行出错 40 75 MS 55740 KB 2692 2025-12-20 13:44:40

Tests(4/10):


#include<bits/stdc++.h> using namespace std; #define int long long #define lson T[pos].ls #define rson T[pos].rs #define pii pair<int,int> #define fr first #define sc second #define mk make_pair #define inx(u) int I=h[(u)],v=edge[I].v;I;I=edge[I].nx,v=edge[I].v int read(){int 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<<1)+(x<<3)+(c^48),c=getchar();return x*f;} const int MAXN=200010,N=70,inf=1e9; struct Edge{int v,nx;}edge[MAXN<<1];int h[MAXN],CNT;void add_side(int u,int v){edge[++CNT]={v,h[u]};h[u]=CNT;edge[++CNT]={u,h[v]};h[v]=CNT;} int n,m,ans,l[MAXN],r[MAXN],a[MAXN],t[MAXN],us[MAXN]; void dfs(int now){ if(now==n+1){ for(int j=1;j<=n;j++)for(int i=1;i<j;i++)if(a[i]==a[j]&&t[i]==t[j])return; int res=0; for(int i=1;i<=n;i++)if(us[i])res++; ans=min(ans,res); return; } for(int i=l[now];i<=r[now];i++){ t[now]=i,us[i]++; dfs(now+1); t[now]=0,us[i]--; } } pii p[MAXN];int cnt; bool cmp(pii x,pii y){return x.sc<y.sc;} struct nd{ int ls,rs,x; }T[MAXN*N]; void update(int &pos,int l,int r,int x){ if(!pos)pos=++cnt; if(l==r){ T[pos].x=1; return; } int mid=(l+r)>>1; if(x<=mid)update(lson,l,mid,x); if(x>mid)update(rson,mid+1,r,x); T[pos].x=T[lson].x+T[rson].x; } int query(int &pos,int l,int r,int ql,int qr){ if(!pos)pos=++cnt; if(T[pos].x==r-l+1)return 0; if(ql<=l&&qr>=r){ if(l==r)return l; int mid=(l+r)>>1; int tmp=query(lson,l,mid,ql,qr); if(!tmp)return query(rson,mid+1,r,ql,qr); return tmp; } int mid=(l+r)>>1; if(qr<=mid)return query(lson,l,mid,ql,qr); if(ql>mid)return query(rson,mid+1,r,ql,qr); int tmp=query(lson,l,mid,ql,qr); if(!tmp)return query(rson,mid+1,r,ql,qr); return tmp; } void slv(){ n=read();ans=N; bool fl=0; for(int i=1;i<=n;i++)l[i]=read(),r[i]=read(),a[i]=read(),fl|=a[i]!=1; if(fl){ dfs(1); if(ans==N)puts("Sorry"); else printf("%lld",ans); } else{ int rt=0; for(int i=1;i<=n;i++)p[i]=mk(l[i],r[i]); sort(p+1,p+n+1,cmp); for(int i=1;i<=n;i++){ int tmp=query(rt,1,inf,l[i],r[i]); if(tmp)update(rt,1,n,tmp); else { puts("Sorry"); return; } } printf("%lld",n); } } signed main(){ //freopen("sport.in","r",stdin);freopen("sport.out","w",stdout); slv(); // cerr<<(clock()*1.0)/CLOCKS_PER_SEC<<"s\n"; return 0; }


测评信息: