Submit Time:2026-01-31 20:08:02
运行 ID: 39778
#include<bits/stdc++.h> #define up(i,l,r) for(int i=(l);i<=(r);++i) #define down(i,l,r) for(int i=(l);i>=(r);--i) #define pi pair<int,int> #define p1 first #define p2 second #define m_p make_pair #define pb push_back #define eb emplace_back #define ppc __builtin_popcountll using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double db; const int maxn=1e6+10; inline ll read(){ ll x=0;short t=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')t=-1;ch=getchar();} while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*t; } int n,a[maxn],b[maxn],pos[maxn],bel[maxn],bel2[maxn]; void slv(){ n=read(); up(i,1,n)a[i]=read(),pos[a[i]]=i; up(i,1,n)b[i]=pos[read()]; set<pi>s; up(i,1,n)s.insert(m_p(int(1e9),i)); int mx=0; up(i,1,n){ auto it=s.lower_bound(m_p(b[i],0)); int p=(*it).p2;s.erase(*it); s.insert(m_p(b[i],p));bel[b[i]]=p; bel2[i]=p;mx=max(mx,p); } printf("%d\n",mx); up(i,1,n)printf("%d%c",bel[i],(i==n)?'\n':' '); up(i,1,n)printf("%d%c",bel2[i],(i==n)?'\n':' '); } int main(){ //freopen("party.in","r",stdin),freopen("party.out","w",stdout); // int t=read();while(t--)slv(); slv(); return 0; }