結果

問題 No.241 出席番号(1)
ユーザー 紙ぺーぱー
提出日時 2015-07-10 23:09:04
言語 C#
(csc 2.8.2.62916)
結果
AC  
実行時間 28 ms
コード長 5,034 Byte
コンパイル時間 1,923 ms
使用メモリ 8,836 KB
最終ジャッジ日時 2018-11-12 14:27:41

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
challenge01.txt AC 26 ms
8,832 KB
challenge02.txt AC 27 ms
8,828 KB
sample1.txt AC 27 ms
8,836 KB
sample2.txt AC 27 ms
8,824 KB
sample3.txt AC 27 ms
8,824 KB
system_test1.txt AC 26 ms
8,828 KB
system_test2.txt AC 25 ms
8,836 KB
system_test3.txt AC 26 ms
8,832 KB
test1.txt AC 26 ms
8,828 KB
test2.txt AC 27 ms
8,820 KB
test3.txt AC 27 ms
8,832 KB
test4.txt AC 26 ms
8,828 KB
test5.txt AC 26 ms
8,828 KB
test6.txt AC 27 ms
8,828 KB
test7.txt AC 28 ms
8,828 KB
test8.txt AC 26 ms
8,832 KB
test9.txt AC 26 ms
8,832 KB
test10.txt AC 27 ms
8,832 KB
test11.txt AC 27 ms
8,832 KB
test12.txt AC 25 ms
8,820 KB
test13.txt AC 27 ms
8,828 KB
test14.txt AC 27 ms
8,832 KB
test15.txt AC 28 ms
8,836 KB
test16.txt AC 26 ms
8,824 KB
テストケース一括ダウンロード
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 2.7.0.62620 (e873e693)
Copyright (C) Microsoft Corporation. All rights reserved.

ソースコード

diff #
using System;
using System.Linq;
using System.Diagnostics;
using System.Collections.Generic;
using Debug = System.Diagnostics.Debug;
using StringBuilder = System.Text.StringBuilder;
using System.Numerics;

namespace Program
{

    public class Solver
    {
        public void Solve()
        {
            var n = sc.Integer();
            var a = sc.Integer(n);
            var map = new int[n];
            foreach (var x in a)
                if (x < n) map[x]++;
            if (map.Any(x => x >= n))
            {
                IO.Printer.Out.WriteLine(-1);
                return;
            }
            var ans = Enumerate(n, x => x);

            for (int i = 0; i < n; i++)
            {
                if (ans[i] != a[i])
                    continue;
                for (int j = 0; j < n; j++)
                {
                    if (i == j)
                        continue;
                    if (ans[i] != a[j])
                        Swap(ref ans[i], ref ans[j]);
                }

            }
            foreach (var x in ans)
                IO.Printer.Out.WriteLine(x);
        }
        public IO.StreamScanner sc = new IO.StreamScanner(Console.OpenStandardInput());
        static T[] Enumerate<T>(int n, Func<int, T> f) { var a = new T[n]; for (int i = 0; i < n; ++i) a[i] = f(i); return a; }
        static public void Swap<T>(ref T a, ref T b) { var tmp = a; a = b; b = tmp; }
    }
}

#region main
static class Ex
{
    static public string AsString(this IEnumerable<char> ie) { return new string(System.Linq.Enumerable.ToArray(ie)); }
    static public string AsJoinedString<T>(this IEnumerable<T> ie, string st = " ") { return string.Join(st, ie); }
    static public void Main()
    {
        var solver = new Program.Solver();
        solver.Solve();
        Program.IO.Printer.Out.Flush();
    }
}
#endregion
#region Ex
namespace Program.IO
{
    using System.IO;
    using System.Text;
    using System.Globalization;
    public class Printer : StreamWriter
    {
        static Printer() { Out = new Printer(Console.OpenStandardOutput()) { AutoFlush = false }; }
        public static Printer Out { get; set; }
        public override IFormatProvider FormatProvider { get { return CultureInfo.InvariantCulture; } }
        public Printer(System.IO.Stream stream) : base(stream, new UTF8Encoding(false, true)) { }
        public Printer(System.IO.Stream stream, Encoding encoding) : base(stream, encoding) { }
        public void Write<T>(string format, T[] source) { base.Write(format, source.OfType<object>().ToArray()); }
        public void WriteLine<T>(string format, T[] source) { base.WriteLine(format, source.OfType<object>().ToArray()); }
    }
    public class StreamScanner
    {
        public StreamScanner(Stream stream) { str = stream; }
        public readonly Stream str;
        private readonly byte[] buf = new byte[1024];
        private int len, ptr;
        public bool isEof = false;
        public bool IsEndOfStream { get { return isEof; } }
        private byte read()
        {
            if (isEof) return 0;
            if (ptr >= len) { ptr = 0; if ((len = str.Read(buf, 0, 1024)) <= 0) { isEof = true; return 0; } }
            return buf[ptr++];
        }
        public char Char() { byte b = 0; do b = read(); while ((b < 33 || 126 < b) && !isEof); return (char)b; }

        public string Scan()
        {
            var sb = new StringBuilder();
            for (var b = Char(); b >= 33 && b <= 126; b = (char)read())
                sb.Append(b);
            return sb.ToString();
        }
        public string ScanLine()
        {
            var sb = new StringBuilder();
            for (var b = Char(); b != '\n'; b = (char)read())
                if (b == 0) break;
                else if (b != '\r') sb.Append(b);
            return sb.ToString();
        }
        public long Long()
        {
            if (isEof) return long.MinValue;
            long ret = 0; byte b = 0; var ng = false;
            do b = read();
            while (b != '-' && (b < '0' || '9' < b));
            if (b == '-') { ng = true; b = read(); }
            for (; true; b = read())
            {
                if (b < '0' || '9' < b)
                    return ng ? -ret : ret;
                else ret = ret * 10 + b - '0';
            }
        }
        public int Integer() { return (isEof) ? int.MinValue : (int)Long(); }
        public double Double() { return double.Parse(Scan(), CultureInfo.InvariantCulture); }
        private T[] enumerate<T>(int n, Func<T> f)
        {
            var a = new T[n];
            for (int i = 0; i < n; ++i) a[i] = f();
            return a;
        }

        public char[] Char(int n) { return enumerate(n, Char); }
        public string[] Scan(int n) { return enumerate(n, Scan); }
        public double[] Double(int n) { return enumerate(n, Double); }
        public int[] Integer(int n) { return enumerate(n, Integer); }
        public long[] Long(int n) { return enumerate(n, Long); }
    }
}
#endregion
0