結果
問題 | No.2771 Personal Space |
ユーザー |
![]() |
提出日時 | 2024-06-15 20:22:51 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 280 ms / 2,000 ms |
コード長 | 1,257 bytes |
コンパイル時間 | 6,055 ms |
コンパイル使用メモリ | 312,152 KB |
実行使用メモリ | 13,632 KB |
最終ジャッジ日時 | 2024-06-15 20:23:06 |
合計ジャッジ時間 | 14,030 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 24 |
ソースコード
#include<bits/stdc++.h>using namespace std;#include <atcoder/all>using namespace atcoder;using mint=modint998244353; //1000000007;using ll=long long;using pp=pair<int,int>;#define sr string#define vc vector#define fi first#define se second#define rep(i,n) for(int i=0;i<(int)n;i++)#define pb push_back#define all(v) v.begin(),v.end()#define pque priority_queue#define bpc(a) __builtin_popcount(a)int main(){int t;cin>>t;rep(z,t){int n,m;cin>>n>>m;m--;auto merge=[&](vc<pp>a,vc<pp>b,pp x)->vc<pp>{vc<pp>res={x};int j=0;rep(i,a.size()){while(j<(int)b.size()){if(b[j].se<=a[i].se)break;res.pb(b[j]);j++;}res.pb(a[i]);}for(;j<(int)b.size();j++)res.pb(b[j]);return res;};auto f=[&](auto f,int l,int r)->vc<pp>{if(l>r){return {};}if(l==0)return merge(f(f,1,r),{},{0,m});if(r==n-1)return merge(f(f,l,n-2),{},{n-1,n-1-m});int a=(l+r)/2;return merge(f(f,l,a-1),f(f,a+1,r),{a,a-(l-1)});};auto ans=merge(f(f,0,m-1),f(f,m+1,n-1),{m,0});vc<int>r(n); rep(i,n)r[i]=i;rep(i,n)r[ans[i].fi]=i;rep(i,n)cout<<r[i]+1<<' ';cout<<"\n";}}