見出し画像

ABC066-C (ARC077-A) 備忘録 p.26

itsukiです。
AtCoderの過去問を解いた様子です。解説記事ではありません。

考察の流れ

まずは愚直に書いてみる(TLE)
愚直コードに n=10, a_i = 1 2 3 4 5 6 7 8 9 10 と入力したところ、
出力は 10 8 6 4 2 1 3 5 7 9 になった
n=9, a_i = 1 2 3 4 5 6 7 8 9 と入力と、出力は 9 7 5 3 1 2 4 6 8 になった
n=偶数のとき、偶(大~小)-> 奇(小~大)という並び
n=奇数のとき、奇(大~小)-> 偶(小~大) という並びになるみたい
a_i の要素番号 i が偶数か奇数かによって、
二つの配列(例えば even[], odd[])に分けて格納し、上記の順に出力する
#include <stdio.h>
int main(){
 	int i, n, even[100001]={0}, odd[100001]={0};
 	scanf("%d",&n);
 	for(i=0; i<n; i++){
     	if(i&1){ scanf("%d", &odd[i/2]); }
     	else   { scanf("%d", &even[i/2]); }
   }
 	if(n&1){
     for(i=(n-1)/2; i>=0; i--){ printf("%d ",even[i]); }
     for(i=0; i<n/2; i++){ printf("%d ", odd[i]); }
   }else{
     for(i=(n-1)/2; i>=0; i--){ printf("%d ", odd[i]); }
     for(i=0; i<n/2; i++){ printf("%d ",even[i]); }
   }
 	printf("\n");
   return 0;
}

まとめ

・最初はさっぱり分からなかったが、愚直解を書いたら解法が浮かんだ
(でも TLE 確信犯で投げたのは反省)

引き続き、のんびり精進します。

#note初心者 #備忘録 #AtCoder #ABC #ARC #競技プログラミング #競プロ #C言語

この記事が気に入ったらサポートをしてみませんか?