1 条题解

  • 0
    @ 2025-12-6 8:11:24

    AC了

    #include<bits/stdc++.h>
    #define ll long long
    #pragma GCC optimize(2)
    #define un unsigned
    #define int long long
    #define db double
    #define inf 1000000000000000
    #define st string
    #define ct const
    #define xh(a,b,c) for(int a=b;a<=c;a++)
    #define wx while(1)
    #define dn(a,b,c) for(int a=b;a>=c;a--)
    using namespace std;
    int n,a[100010],b[100010],ans;
    void qsort(int left,int right){
    	int mid=(left+right)/2;
    	if(left>=right)return ;
    	int k=left,i=left,j=mid+1;
    	qsort(left,mid);
    	qsort(mid+1,right);
    	while(i<=mid&&j<=right){
    		if(a[i]<a[j]){
    			ans+=mid-i+1;
    			b[k++]=a[j++];
    		}
    		else b[k++]=a[i++];
    	}
    	while(i<=mid)b[k++]=a[i++];
    	while(j<=right)b[k++]=a[j++];
    	xh(i,left,right)a[i]=b[i];
    }
    signed main(){
    	cin>>n;
    	xh(i,1,n)cin>>a[i],a[i]+=(n-i+1);//重点
    	qsort(1,n);
    	cout<<ans%12345;
    	return 0;
    }
    
    • 1

    信息

    ID
    87
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    (无)
    递交数
    104
    已通过
    18
    上传者