题面:
【题目描述】
(排序速度测试题目,可以上传自己手写的排序程序测试速度)
输入方式如下:
输入两个正整数n,x,y。n表示数据个数,x,y表示随机数生成种子。
假设第i个数的值为a[i],
i=1时,a[1]=1;
2<=i<=n时,设mod=998244353,则a[i]=((a[i-1]*x+y)%mod+mod)%mod.
输出方式如下:
假设数组a为排序后的数组,则输出a[1]-a[2]+a[3]-a[4]…
【输入文件】 sort_speed.in 第一行输入3个正整数n,x,y (1≤n≤1e7,-1e7≤x,y≤1e7)。
【输出文件】 sort_speed.out
输出a[1]-a[2]+a[3]-a[4]…。
【样例输入1】
6 1 2
【样例输出1】
-6
代码:(RE)
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int a[N];
void qsort(int l,int r)
{
if(l>=r) return ;
int lef=l,rig=r,val=a[l];
while(lef<rig)
{
while(lef<rig&&a[rig]>val)
rig--;
if(lef!=rig)
a[lef++]=a[rig];
while(lef<rig&&a[lef]<=val) lef++;
if(lef!=rig) a[rig--]=a[lef];
}
a[lef]=val;
qsort(1,lef-1),qsort(lef+1,r);
}
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
qsort(1,n);
for(int i=1;i<=n;i++) printf("%d ",a[i]);
return 0;
}