70分求助,有的数据结果少一
查看原帖
70分求助,有的数据结果少一
447941
xdd5689楼主2022/11/2 21:56
#include <bits/stdc++.h>
#define l long long
using namespace std;
l n,m,a[20006],ans[100000006],a1=0;
l xdd()
{
	l sum=0;
	for(l i=1;i<=n;i++)
	{
		for(l j=i+1;j<=n;j++)
		{
			if(a[i]>a[j]) sum++;
		}
	}
	return sum;
}
int main()
{
	cin>>n;
	for(l i=1;i<=n;i++) cin>>a[i];
	cin>>m;
	l s;
	s=xdd();
	ans[++a1]=s;
	for(l i=1;i<=m;i++)
	{
		l x,y;
		cin>>x>>y;
		if(x<y)
		{
			for(l j=x+1;j<y;j++)
			{
				if(a[j]>a[y]) s--;
				else if(a[j]!=a[y]) s++;
			}
			for(l j=x+1;j<y;j++)
			{
				if(a[j]>a[x]) s++;
				else if(a[j]!=a[x])s--;
			}
			if(a[x]<a[y])
			{
				s++;
			}
			else
			{
				s--;
			}
		}
		else
		{
			swap(x,y);
			for(l j=x+1;j<y;j++)
			{
				if(a[j]>a[y]) s--;
				else if(a[j]!=a[y]) s++;
			}
			for(l j=x+1;j<y;j++)
			{
				if(a[j]>a[x]) s++;
				else if(a[j]!=a[x])s--;
			}
			if(a[x]<a[y])
			{
				s++;
			}
			else
			{
				s--;
			}
		}
		swap(a[x],a[y]);
		ans[++a1]=s;
	}
	for(l i=1;i<=a1;i++)
	{
		printf("%lld\n",ans[i]);
	}
	return 0;
}
2022/11/2 21:56
加载中...