結果

問題 No.273 回文分解
ユーザー 紙ぺーぱー
提出日時 2015-08-28 22:34:50
言語 C#
(csc 3.5.0-beta1-19606-04)
結果
AC  
実行時間 38 ms
コード長 4,699 Byte
コンパイル時間 1,026 ms
使用メモリ 18,528 KB
最終ジャッジ日時 2020-03-31 23:50:12

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
99_system_test1.txt AC 33 ms
14,408 KB
99_system_test2.txt AC 35 ms
16,492 KB
99_system_test3.txt AC 35 ms
16,472 KB
sample1.txt AC 35 ms
16,468 KB
sample2.txt AC 36 ms
16,464 KB
sample3.txt AC 33 ms
16,500 KB
system_test1.txt AC 32 ms
16,492 KB
system_test2.txt AC 33 ms
16,472 KB
system_test3.txt AC 33 ms
16,484 KB
system_test4.txt AC 33 ms
14,440 KB
system_test5.txt AC 33 ms
14,404 KB
system_test6.txt AC 37 ms
18,516 KB
system_test7.txt AC 34 ms
18,516 KB
system_test8.txt AC 33 ms
16,464 KB
system_test9.txt AC 34 ms
14,432 KB
test1.txt AC 35 ms
16,464 KB
test2.txt AC 34 ms
14,440 KB
test3.txt AC 32 ms
14,420 KB
test4.txt AC 30 ms
14,436 KB
test5.txt AC 30 ms
14,460 KB
test6.txt AC 32 ms
16,472 KB
test7.txt AC 35 ms
14,436 KB
test8.txt AC 35 ms
16,488 KB
test9.txt AC 35 ms
16,480 KB
test10.txt AC 33 ms
16,484 KB
test11.txt AC 37 ms
16,500 KB
test12.txt AC 38 ms
18,528 KB
test13.txt AC 36 ms
14,444 KB
test14.txt AC 38 ms
16,488 KB
test15.txt AC 35 ms
16,484 KB
test16.txt AC 35 ms
16,488 KB
test17.txt AC 32 ms
16,456 KB
test18.txt AC 35 ms
16,468 KB
test19.txt AC 33 ms
18,500 KB
test20.txt AC 34 ms
14,432 KB
テストケース一括ダウンロード
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.5.0-beta1-19606-04 (d2bd58c6)
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 s=sc.Scan();
          var n=s.Length;
          var max=1;
          for(int i=0;i<n;i++){
            for(int j=i+1;j<n;j++)
            {
                            var t=s.Substring(i,j-i+1);
              var rev=t.Reverse().AsString();
              if(i==0&&j==n-1)
              continue;
              if(t==rev)
              {
                max=Math.Max(t.Length,max);
              }
            }

          }
          Console.WriteLine(max);
        }

        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