/*
#include <stdio.h>
int q[201]={},top=-1,back=-1;
void pop()
{
if (back<top)
{
back++;
}
}
void topp()
{
if (top==back)
{
printf("-1");
}
else
{
printf("%d", q[back+1]);
}
printf("\n");
}
void push(int x)
{
top ++;
q[top]=x;
}
void size()
{
printf("%d\n", top-back);
}
void empty()
{
if (top==back)
{
printf("true\n");
}
else
{
printf("false\n");
}
}
void ee()
{
int i,j,o,max;
for (i=back+1;i<=top;i++)
{
max=i;
for (j=i+1;j<=top;j++)
{
if (q[max]<q[j])
{
max = j;
}
}
o=q[i];
q[i]=q[max];
q[max]=o;
}
}
int main()
{
int n,i,x;
char str[10]={};
scanf("%d", &n);
for (i=1;i<=n;i++)
{
scanf("%s", str);
if (str[1]=='u')
{
scanf("%d )", &x);
push(x);
ee();
}
else if (str[1]=='o'&&str[0]=='t')
{
topp();
}
else if (str[1]=='o'&&str[0]=='p')
{
pop();
ee();
}
else if (str[1]=='i')
{
size();
}
else if (str[1]=='m')
{
empty();
}
}
return 0;
}
퀵정렬
void qs(int s, int e) // a[s] ~ a[e]까지 퀵정렬 하기
{
//재귀함수의 종료조건
if(s>=e) return ; // 1개이거나 0개일때
int pivot= s; // pivot=기준
a[pivot]를 기준으로
1. a[s] ...작은애들 .... a[pivot] .... 큰애들.. .a[e]
2. qs(s,pivot-1); qs(pivot+1,e);
}
>> 퀵정렬 직접 구현 ( 앞으로 딱히 할 일은 없음)
#include <stdio.h>
int a[100001];
int n, i, j, temp,yy=0;
//quick_sort
void qs(int s, int e) // a[s] ~ a[e]까지 퀵정렬 하기
{
//재귀함수의 종료조건
if(s>=e||yy==1) return ; // 1개이거나 0개일때
int pivot= s; // pivot=기준
int left=s;
int right=e+1;
do{
do{
left++;
}while(a[pivot]>a[left]);
do{
right--;
}while(a[pivot]<a[right]);
if(left<right){
// a[left] a[right] 교환하기
int t=a[left];
a[left]=a[right];
a[right]=t;
}
} while(left<right);
// a[s]와 a[right]값 교환해서 기준값 가운데다 놓기
int t=a[s];
a[s]=a[right];
a[right]=t;
pivot=right;
// a[pivot]를 기준으로
// 1. a[s] ...작은애들 .... a[pivot] .... 큰애들.. .a[e]
qs(s,pivot-1); qs(pivot+1,e);
}
int main()
{
scanf("%d", &n);
for (i=1; i<=n; i++)
scanf("%d", &a[i]);
qs(1,n);
for (i = 1; i <= n; i++)
printf("%d\n", a[i]);
return 0;
}
c언어가 제공하는 퀵정렬 함수 사용하기
*/
/*
#include <stdio.h>
#include<stdlib.h>
int a[100001];
int n, i, j, temp,yy=0;
int compare(int* pa, int* pb){
if( *pa > *pb){
return 1;
}
else if(*pa <*pb){
return -1;
}
else{
return 0;
}
}
int main()
{
scanf("%d", &n);
for (i=1; i<=n; i++)
scanf("%d", &a[i]);
//1. &a[1] or a+1 -> 퀵정렬을 시작할 곳의 주소
//2. 정렬할 데이터의 개수 n
//3. 정렬할 데이터의 크기
//4. 정렬 기준을 정한 함수
qsort(&a[1], n, sizeof(int), compare);
for (i = 1; i <= n; i++)
printf("%d\n", a[i]);
return 0;
}
*/
/*
#include <stdlib.h>
#include <stdio.h>
int f(int* pa, int*pb)
{
if (*pa>*pb)
{
return 1;
}
else if (*pa<*pb)
{
return -1;
}
else
{
return 0;
}
}
int main()
{
int n,h,arr[100]={},i;
scanf("%d %d", &n, &h);
for (i=1;i<=n;i++)
{
scanf("%d", &arr[i]);
}
qsort(&arr[1],n,sizeof(int),f);
for (i=1;i<=n;i++)
{
printf("%d ", arr[i]);
if (i%h==0)
{
printf("\n");
}
}
return 0;
}
*/