#include <stdio.h>
int N, M, n[100001];

int mid(int a, int b, int c){
 if (n[a] > n[b]&& n[a] < n[c])return a;
 if (n[b] > n[a]&& n[b] < n[c])return b;
 return c;
}


int q_sort_up(int s, int e){
 if (s >= e)return 0;
 int l = mid(s, e, (s + e) / 2);
 int L = n[l], T = s, i, temp;
 temp = n[l]; n[l] = n[e]; n[e] = temp;

 for (i = s; i < e; i++){
  if (L >= n[i]){
   temp = n[T]; n[T] = n[i]; n[i] = temp;
   T++;
  }
 }
 if (L < n[T]){
  temp = n[T]; n[T] = n[e]; n[e] = temp;
 }
 q_sort_up(s, T);
 q_sort_up(T + 1, e);
}

int q_sort_down(int s, int e){
 if (s >= e)return 0;
 int l = mid(s, e, (s + e) / 2);
 int L = n[l], T = s, i, temp;
 temp = n[l]; n[l] = n[e]; n[e] = temp;

 for (i = s; i < e; i++){
  if (L <= n[i]){
   temp = n[T]; n[T] = n[i]; n[i] = temp;
   T++;
  }
 }
 if (L > n[T]){
  temp = n[T]; n[T] = n[e]; n[e] = temp;
 }
 q_sort_down(s, T);
 q_sort_down(T + 1, e);
}

int main(void)
{
 int i, j;
 scanf("%d %d", &N, &M);
 for (i = 0; i < N; i++){
  scanf("%d", &n[i]);
 }
 if (M==0)q_sort_up(0, N - 1);
 else q_sort_down(0, N - 1);
 for (i = 0; i < N; i++){
  printf("%d\n", n[i]);
 }
}


이러면 메모리는 100001 배열만큼만 사용한거아닌가?

문제 메모리 제한은 32MB인데 이 소스 제출하면 자꾸 메모리 초과했다고 뜸