/*
#include <stdio.h>
int stack[80001];
int top=-1;
void push(int data) {
stack[++top]=data;
}
int pop() {
if(top!=-1)
return stack[top--];
}
int main() {
int i,n,h;
long long int sum=0;
scanf("%d",&n);
for(i=1; i<=n; i++) {
scanf("%d",&h);
while(top>-1 && stack[top]<=h){
pop();
}
sum+=top+1;
push(h);
}
printf("%lld",sum);
return 0;
}
*/
/*
#include <stdio.h>
int stack[10000]={};
int top=-1;
void push(int data) {
stack[++top]=data;
}
int pop() {
if(top!=-1)
return stack[top--];
}
int main()
{
char a[20000];
int i,num=0;
gets(a);
for(i=0;a[i]!=0;i++)
{
if(a[i]<58 && a[i]>47)
{
num= num*10 + (a[i]-48);
if(a[i+1]==' '){
push(num);
num=0;
}
}
else if(a[i]==' '){
continue;
}
else{ //연산자라면
int x = pop();
int y = pop();
if(a[i]=='+')
push(x+y);
else if(a[i]=='-')
push(y-x);
else if(a[i]=='*')
push(x*y);
}
}
printf("%d",pop());
return 0;
}
dub_020814
godbksk19
*/
/*
#include <stdio.h>
int stack[10000][2]={};
int top=-1;
void push(int data,int d) {
stack[++top][0]=data;
stack[top][1]=d;
}
int main()
{
int n,h;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&h);
while(top>-1 && stack[top][0]<=h)
{
top--;
}
// sum[i]+=stack[][2];
if(top==-1) printf("0 ");
else printf("%d ",stack[top][1]);
push(h,i);
}
return 0;
}
정렬 (오름차순, 내림차순)
코드easy -> 성능 bad (버블, 선택, 삽입)
코드hard -> 성능 good (퀵, 병합, 힙, 기수 ..... )
어느 하나가 무조건 빠르다. (x)
입력되는 데이터에따라 어떤 정렬이 빠를지 모른다 (o)
1. 버블정렬
5 1 4 2 3
round1
1 5 4 2 3
1 4 5 2 3
1 4 2 5 3
1 4 2 3 "5"
round2
1 2 4 3 "5"
1 2 3 "4 5"
round3
1 2 "3 4 5"
round 4
"1 2 3 4 5"
*/