输出正确,时间开支太大了吗?
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
inline void swap(int *a, int *b){
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
inline int Partion(int *a, int left, int right){
int i = left;
int j = right + 1;
int Ele = a[left];
do{
do i++; while (a[i] < Ele);
do j--; while (a[j] > Ele);
if (i < j) swap(&a[i], &a[j]);
} while (i < j);
swap(&a[left], &a[j]);
return j;
}
inline void Qsort(int *a,int left,int right){
int k;
if (left < right){
k = Partion(a, left, right);
Qsort(a, left, k - 1);
Qsort(a, k + 1, right);
}
}
int main(){
int n, i = 0, j = 0, tmp=0;
int a[10000];
char c;
char str[20]="";
int chong, duan;
memset(a, -1, sizeof(a));
scanf("%d", &n);
getchar();
while (n>0){
c = getchar();
if (c == 32){
if (str[0] =='\0') continue;
a[i++] = atoi(str);
str[0] = '\0';
j = 0;
continue;
}
if (c == 10){
n--;
if (str[0] == '\0') continue;
a[i++] = atoi(str);
str[0] = '\0';
j = 0;
continue;
}
str[j] = c;
str[j + 1] = '\0';
j++;
}
Qsort(a,0,i);
while (i > 0){
tmp = a[i];
if (a[i - 1] == tmp - 2)
duan = tmp - 1;
if (a[i - 1] == tmp)
chong = tmp;
i--;
}
printf("%d %d\n", duan,chong);
return 0;
}