求树状数组解法,玄关
查看原帖
求树状数组解法,玄关
1367000
Ybll_楼主2024/11/19 17:02
#include<bits/stdc++.h>
using namespace std;
long long n,m,x[100005],a[100005],f[100005],ans[100005],vis[100005];
int main()
{
//	freopen("martian.in","r",stdin);
//	freopen("martian.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
    cout.tie(0);
	cin>>n>>m;
	int M=sqrt(n);
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		x[i]=a[i]-1;
		for(int j=a[i];j;j-=j&(-j))
		{
			x[i]-=f[j];
		}
		for(int j=a[i];j<=n;j+=j&(-j))
		{
			f[j]++;
		}
	}
	x[n]+=m;
	for(int i=n;i>=1;i--)
	{
		x[i-1]+=x[i]/(n-i+1);
		x[i]%=(n-i+1);
	}
	for(int i=1;i<=n;i++)
	{
		/*
		这里不会 
		*/
	}
	for(int i=1;i<=n;i++)
	{
		cout<<ans[i]<<' ';
	}
	return 0;
}
2024/11/19 17:02
加载中...