結果
問題 | No.193 筒の数式 |
ユーザー | syoken_desuka |
提出日時 | 2015-04-26 23:14:21 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
AC
|
実行時間 | 27 ms / 1,000 ms |
コード長 | 6,678 bytes |
コンパイル時間 | 1,155 ms |
コンパイル使用メモリ | 107,008 KB |
実行使用メモリ | 17,920 KB |
最終ジャッジ日時 | 2024-07-05 01:26:47 |
合計ジャッジ時間 | 2,468 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 16 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
#region ZIPPERusing System;using System.Collections.Generic;using System.Collections;using System.Linq;using System.Text;using sc = Scanner;using System.Numerics;//using Geometry;//using gl = Geometry.GeometryLibrary;class Program{static void Main(string[] args){Solver solver = new Solver();solver.Solve();#if DEBUGSystem.Console.WriteLine("続行するには何かキーを押してください...");System.Console.ReadKey();#endif}}/// <summary>/// 標準入力読み取り支援,自作(某最速の人を参考)/// </summary>#endregion ZIPPERpublic class Solver{#region IGNORE_MEpublic Solver(){//こんすとらくたん きにしなくてよろしい}#endregion IGNORE_MEpublic int MOD = 1000000007;//10^9 + 7public void Solve(){string s = Console.ReadLine();string reader = "";int tmpans = 0;int answer = int.MinValue;for (int i = 0; i < s.Length; i++){tmpans = 0;reader = s.Substring(s.Length - i, i) + s.Substring(0, s.Length - i);if (reader[0] == '+' || reader[0] == '-' || reader[s.Length - 1] == '+' || reader[s.Length - 1] == '-')continue;Queue<int> plus = new Queue<int>();for (int j = 0; j < s.Length; j++){if (reader[j] == '+'){plus.Enqueue(1);}else if (reader[j] == '-'){plus.Enqueue(-1);}}string[] num = reader.Split(new char[]{'+','-'});tmpans = int.Parse(num[0]);for (int k = 1; k < num.Length; k++){tmpans = tmpans + plus.Dequeue() * int.Parse(num[k]);}answer = Math.Max(answer, tmpans);}Console.WriteLine(answer);#if DEBUGConsole.WriteLine("");//local check#endif}}public static class Scanner{public static string NextString(){string tmp = "";while (true){int readData;string data;readData = Console.Read();if (readData == -1) //EOF{break;}data = char.ConvertFromUtf32(readData);if (data == " " || data == "\n"){break;}tmp += data;}return tmp;}public static int NextInt(){string tmp = "";while (true){int readData;string data;readData = Console.Read();if (readData == -1) //EOF{break;}data = char.ConvertFromUtf32(readData);if (data == " " || data == "\n"){break;}tmp += data;}return int.Parse(tmp);}public static long NextLong(){string tmp = "";while (true){int readData;string data;readData = Console.Read();if (readData == -1) //EOF{break;}data = char.ConvertFromUtf32(readData);if (data == " " || data == "\n"){break;}tmp += data;}return long.Parse(tmp);}public static double NextDouble(){string tmp = "";while (true){int readData;string data;readData = Console.Read();if (readData == -1) //EOF{break;}data = char.ConvertFromUtf32(readData);if (data == " " || data == "\n"){break;}tmp += data;}return double.Parse(tmp);}public static string[] NextStrArray(){return Console.ReadLine().Split(' ');}public static int[] NextIntArray(){string[] s = NextStrArray();int[] a = new int[s.Length];for (int i = 0; i < a.Length; i++){a[i] = int.Parse(s[i]);}return a;}public static long[] NextLongArray(){string[] s = NextStrArray();long[] a = new long[s.Length];for (int i = 0; i < a.Length; i++){a[i] = long.Parse(s[i]);}return a;}public static double[] NextDoubleArray(){string[] s = NextStrArray();double[] a = new double[s.Length];for (int i = 0; i < a.Length; i++){a[i] = double.Parse(s[i]);}return a;}}/// <summary>/// 二次元グリッドなどの文字列で与えられたマップなどで、/// 手軽にデータ変換を適用するためのクラス/// </summary>public static class CharInterpreter{/// <summary>/// 変換用辞書/// </summary>private static Dictionary<char, int> MapToInt = new Dictionary<char, int>();/// <summary>/// 変換法則を追加する/// </summary>/// <param name="c">char文字</param>/// <param name="i">対応する整数値</param>public static void AddCorrespondence(char c,int i){MapToInt.Add(c,i);}/// <summary>/// 文字列に対して、対応付けされた/// 例外処理をしていないので注意/// </summary>/// <returns>対応対応がなかった場合はバグる;;</returns>public static int Inquiry(char c){int ret = 0;MapToInt.TryGetValue(c, out ret);return ret;}/// <summary>/// 指定された変換法則の元でint[,]の二次元平面を生成する/// 対応関係がない場合の例外処理をしていないので注意/// </summary>/// <param name="field">配列の各文字列の長さが全て同じでないとうまく作動しないので注意</param>/// <returns> int[ field.length , field[0].length]型の配列 </returns>public static int[,] GenerateSquareField(string[] field){int[,] ret = new int[field.Length, field[0].Length];for (int i = 0; i < field.Length; i++){for (int j = 0; j < field[0].Length; j++){MapToInt.TryGetValue(field[i][j], out ret[i, j]);}}return ret;}}