1 条题解
-
0
#include<bits/stdc++.h> using namespace std; #define int long long const int N=2e5+10; #define PII pair<int,int> #define fi first #define se second int a[N],b[N],d[N],n; PII get(int x) { int id=lower_bound(b+1,b+n,x)-b-1; return {id+1,x-b[id]+id+1}; } signed main() { cin>>n;int l,r;cin>>l>>r; for(int i=1;i<=n;i++)a[i]=i; for(int i=1;i<n;i++)b[i]=b[i-1]+(n-i); int id=lower_bound(b+1,b+n,l)-b; for(int i=l;i<=min(b[id],r);i++) { PII x=get(i); swap(a[x.fi],a[x.se]); } int id1=upper_bound(b+1,b+n,r)-b-1,len=id1-id; if(len<0) { for(int i=1;i<=n;i++)cout<<a[i]<<' ';cout<<'\n'; return 0; } for(int i=1;i<=id;i++)d[i]=a[i]; for(int i=id+1;i<=id+len;i++)d[i]=a[id+1+n-i]; for(int i=id+len+1;i<=n;i++)d[i]=a[i-len]; for(int i=b[id1]+1;i<=r;i++) { PII x=get(i); swap(d[x.fi],d[x.se]); } for(int i=1;i<=n;i++)cout<<d[i]<<' ';cout<<'\n'; return 0; }
- 1
信息
- ID
- 9938
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 10
- 标签
- 递交数
- 5
- 已通过
- 2
- 上传者