社区讨论

A了2个点,T了3个点,求dalao改错

P1177【模板】排序参与者 2已保存回复 12

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
12 条
当前快照
1 份
快照标识符
@mi6i5mk3
此快照首次捕获于
2025/11/20 05:16
4 个月前
此快照最后确认于
2025/11/20 05:23
4 个月前
查看原帖
qwq怎么想都觉得我写得很对,TLE是什么鬼啦
CPP
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdio> 
const int MAXN = 100005;
int n;
int num[MAXN];
inline void read(int &x)
{
    char ch = getchar(),c = ch;x = 0;
    while(ch < '0' || ch > '9') c = ch,ch = getchar();
    while(ch <= '9' && ch >= '0') x = (x<<1)+(x<<3)+ch-'0',ch = getchar();
    if(c == '-') x = -x;
}
inline void swap(int &a,int &b)
{
    int tmp = a;
    a = b;
    b = tmp;
}
void q_sort(int l,int r)
{
    int i = l,j = r;
    if(i >= r)
        return;
    int tmp = num[l];
    while(i < j)
    {
        while(num[j] >= tmp && i < j)
            j --;
        while(num[i] <= tmp && i < j)
            i ++;
        if(i < j) swap(num[i],num[j]);
    }
    if(num[l] > num[i]) swap(num[l],num[i]);
    q_sort(l,i);
    q_sort(i+1,r);
}
int main()
{
    read(n);
    for(int i = 1;i <= n;++ i)
        read(num[i]);
    q_sort(1,n);
    for(int i = 1;i <= n;++ i)
        printf("%d ",num[i]);
    puts("");
    return 0;
}

回复

12 条回复,欢迎继续交流。

正在加载回复...