読者です 読者をやめる 読者になる 読者になる

メモ

yukicoderで遊んでいる競プロゆるふわ勢

yukicoder No.275 中央値を求めよ

問題はこちら
No.275 中央値を求めよ - yukicoder

ソートして中央値を求めるだけ
要素の個数が偶数の時にちょっと注意が必要

int c(int*a,int*b){return*a-*b;}
int main(){
	int a[1010];
	int n,i;
	scanf("%d",&n);
	for(i=0;i<n;i++)scanf("%d",a+i);
	qsort(a,n,4,c);
	printf("%f",(a[n/2]+a[(n-1)/2])/2.0);
	//2で割ると整数型の除算となり切り捨てられるので2.0にする
	return 0;
}

n/2と(n-1)/2はnが奇数のとき同じ値となり配列の真ん中を指す
偶数の時は真ん中2つを指す

いつものように読み飛ばしを頑張って

x,a[999];
c(int*a,int*b){x=*a-*b;}
main(i){
	for(;~scanf("%d",a-i--););
	qsort(a,~i,4,c);
	x=!printf("%f",(a[~i/2]+a[~-~i/2])/2.);
}

123B