C - Exception Handling
コード
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main() {
int N;
cin >> N;
int A[N];
int A_sort[N];
for (int i = 0; i < N; i++) {
cin >> A[i];
A_sort[i] = A[i];
}
sort(A_sort, A_sort + N);
for (int i = 0; i < N; i++) {
int ret;
if (A[i] == A_sort[N-1]) ret = A_sort[N-2];
else ret = A_sort[N-1];
cout << ret << endl;
}
}
学んだこと
- std::sortで実際にメモリ上の並び順が変わる。sort前の順番を保持しておきたければ、コピーをつくってsortすること。
- 配列をまるごとコピーする専用の方法は特に用意されていないので、以下でやる。
- 1要素ずつコピー。
- memcpy関数でメモリ領域をまとめてコピー。
- 構造体のメンバとして配列をもたせて、構造体をコピーするとメンバもコピーされる。
#include <bits/stdc++.h>
はgccで用意されており、標準ライブラリを一括includeできる。
- が、macでこれを使うのはちょっと面倒そうなのでやめておく。