結果
問題 | No.241 出席番号(1) |
ユーザー |
![]() |
提出日時 | 2015-07-27 10:56:31 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,461 bytes |
コンパイル時間 | 755 ms |
コンパイル使用メモリ | 87,040 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-11-30 21:31:33 |
合計ジャッジ時間 | 1,918 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 29 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:28:8: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 28 | scanf("%d", &n); | ~~~~~^~~~~~~~~~ main.cpp:31:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 31 | scanf("%d", &a[i]); | ~~~~~^~~~~~~~~~~~~
ソースコード
#include <algorithm>#include <vector>#include <cfloat>#include <string>#include <cmath>#include <set>#include <cstdlib>#include <map>#include <ctime>#include <iomanip>#include <functional>#include <deque>#include <iostream>#include <cstring>#include <queue>#include <cstdio>#include <stack>#include <climits>#include <sys/time.h>#include <cctype>using namespace std;typedef long long ll;int main() {int n;scanf("%d", &n);int a[n];for (int i = 0; i < n; i++) {scanf("%d", &a[i]);}bool check = false;for (int i = 0; i < n-1; i++) {if (a[i] != a[i+1]) {check = true;break;}}if (!check && a[0] < n) {puts("-1");return 0;}pair<int, int> memo[n];for (int i = 0; i < n; i++) {if (a[i] >= n) {memo[i] = {-1, i};}else {memo[i] = {a[i], i};}}sort(memo, memo+n);int ans[n];memset(ans, -1, sizeof(ans));for (int i = 0; i < n; i++) {if (memo[i].first != i) {bool ok = true;for (int j = i+1; j < n; j++) {if (memo[j].first == j) {ok = false;ans[memo[j].second] = i;swap(memo[i], memo[j]);break;}}if (ok) {ans[memo[i].second] = i;}continue;}for (int j = i+1; j < n; j++) {if (memo[j].first != i) {ans[memo[j].second] = i;swap(memo[i], memo[j]);break;}}}for (int i = 0; i < n; i++) {printf("%d\n", ans[i]);}}