結果
| 問題 | 
                            No.282 おもりと天秤(2)
                             | 
                    
| コンテスト | |
| ユーザー | 
                             紙ぺーぱー
                         | 
                    
| 提出日時 | 2015-08-24 11:00:13 | 
| 言語 | C#(csc)  (csc 3.9.0)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 2,111 ms / 5,000 ms | 
| コード長 | 2,251 bytes | 
| コンパイル時間 | 1,274 ms | 
| コンパイル使用メモリ | 113,456 KB | 
| 実行使用メモリ | 39,904 KB | 
| 平均クエリ数 | 221.33 | 
| 最終ジャッジ日時 | 2024-07-16 21:14:10 | 
| 合計ジャッジ時間 | 22,180 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge2 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 24 | 
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;
using System.Collections.Generic;
using Debug = System.Diagnostics.Debug;
using StringBuilder = System.Text.StringBuilder;
using System.Numerics;
using static System.Linq.Enumerable;
using static System.Math;
namespace Program
{
    public class Solver
    {
        /// <summary>
        /// Odd-even sort
        /// </summary>
        public void Solve()
        {
            var n = int.Parse(Console.ReadLine());
            var A = Enumerate(n, x => x + 1);
            for (int _ = 0; _ < (n+1)/2; _++)
            {
                var B = new int[2 * n];
                for (int i = 0; i + 2 <= n; i += 2)
                {
                    B[i] = A[i];
                    B[i + 1] = A[i + 1];
                }
                Console.WriteLine("? {0}", B.AsJoinedString());
                var ans = Console.ReadLine().Split();
                for (int i = 0; i * 2 < n; i++)
                {
                    if (ans[i] == ">")
                        Swap(ref A[i * 2], ref A[i * 2 + 1]);
                }
                Array.Clear(B, 0, n);
                for (int i = 0; i + 2 < n; i += 2)
                {
                    B[i] = A[i + 1];
                    B[i + 1] = A[i + 2];
                }
                Console.WriteLine("? {0}", B.AsJoinedString());
                ans = Console.ReadLine().Split();
                for (int i = 0; i * 2 < n; i++)
                {
                    if (ans[i] == ">")
                        Swap(ref A[i * 2 + 1], ref A[i * 2 + 2]);
                }
            }
            Console.WriteLine("! {0}", A.AsJoinedString());
        }
        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();
    }
}
#endregion
            
            
            
        
            
紙ぺーぱー