Submission #534522


Source Code Expand

using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Text;
using System.Numerics;
using System.Globalization;

namespace Solver
{
    class Program
    {
        const int M = 1000000007;
        const double eps = 1e-9;
        static void Main()
        {
            var sw = new System.IO.StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false };
            var sc = new Scan();
            int t = sc.Int;
            for (int i = 0; i < t; i++)
            {
                int h, w;
                sc.Multi(out h, out w);
                var p = 2 / Math.Sqrt(3);
                if (h > w * p)
                {
                    sw.WriteLine(Math.Sqrt(Math.Pow(h / 2.0, 2) + w * w));
                    continue;
                }
                if (w > h * p)
                {
                    sw.WriteLine(Math.Sqrt(Math.Pow(w / 2.0, 2) + h * h));
                    continue;
                }
                double l = 0, r = w;
                while (r - l > eps)
                {
                    var m = (r + l) / 2;
                    var y = Math.Sqrt(h * h + m * m - w * w);
                    if (Math.Pow(w - m, 2) + Math.Pow(h - y, 2) < h * h + m * m)
                        r = m;
                    else
                        l = m;
                }
                sw.WriteLine(Math.Sqrt(h * h + l * l));
            }
            sw.Flush();
        }
    }
    class Scan
    {
        public int Int { get { return int.Parse(Console.ReadLine().Trim()); } }
        public long Long { get { return long.Parse(Console.ReadLine().Trim()); } }
        public string Str { get { return Console.ReadLine().Trim(); } }
        public int[] IntArr { get { return Console.ReadLine().Trim().Split().Select(int.Parse).ToArray(); } }
        public int[] IntArrWithSep(char sep) { return Console.ReadLine().Trim().Split(sep).Select(int.Parse).ToArray(); }
        public long[] LongArr { get { return Console.ReadLine().Trim().Split().Select(long.Parse).ToArray(); } }
        public double[] DoubleArr { get { return Console.ReadLine().Split().Select(double.Parse).ToArray(); } }
        public string[] StrArr { get { return Console.ReadLine().Trim().Split(); } }
        public List<int> IntList { get { return Console.ReadLine().Trim().Split().Select(int.Parse).ToList(); } }
        public List<long> LongList { get { return Console.ReadLine().Trim().Split().Select(long.Parse).ToList(); } }
        public void Multi(out int a, out int b) { var arr = IntArr; a = arr[0]; b = arr[1]; }
        public void Multi(out int a, out int b, out int c) { var arr = IntArr; a = arr[0]; b = arr[1]; c = arr[2]; }
        public void Multi(out int a, out int b, out int c, out int d) { var arr = IntArr; a = arr[0]; b = arr[1]; c = arr[2]; d = arr[3]; }
        public void Multi(out int a, out string b) { var arr = StrArr; a = int.Parse(arr[0]); b = arr[1]; }
        public void Multi(out int a, out int b, out string c) { var arr = StrArr; a = int.Parse(arr[0]); b = int.Parse(arr[1]); c = arr[2]; }
        public void Multi(out int a, out char b) { var arr = StrArr; a = int.Parse(arr[0]); b = arr[1][0]; }
        public void Multi(out char a, out int b) { var arr = StrArr; a = arr[0][0]; b = int.Parse(arr[1]); }
        public void Multi(out long a, out long b) { var arr = LongArr; a = arr[0]; b = arr[1]; }
        public void Multi(out long a, out int b) { var arr = LongArr; a = arr[0]; b = (int)arr[1]; }
        public void Multi(out string a, out string b) { var arr = StrArr; a = arr[0]; b = arr[1]; }
    }
    class mymath
    {
        int M;
        const double eps = 1e-9;
        public mymath(int M) { this.M = M; }
        public long pow(long a, long b)
        {
            if (b == 0) return 1;
            if (b == 1) return a % M;

            long t = pow(a, b / 2);

            if ((b & 1) == 0) return t * t % M;
            else return t * t % M * a % M;
        }
        public long gcd(long a, long b)
        {
            while (b != 0)
            {
                var t = a % b;
                a = b;
                b = t;
            }
            return a;
        }
        public long lcm(int a, int b) { return (a * b) / gcd(a, b); }
    }
}

Submission Info

Submission Time
Task E - マッサージチェア2015
User riantkb
Language C# (Mono 3.2.1.0)
Score 200
Code Size 4379 Byte
Status AC
Exec Time 136 ms
Memory 10244 KB

Judge Result

Set Name All
Score / Max Score 200 / 200
Status
AC × 16
Set Name Test Cases
All 00_sample.txt, 10_squares.txt, 11_maxw.txt, 12_maxh.txt, 20_corner.txt, 21_corner.txt, 22_corner.txt, 23_corner.txt, 24_corner.txt, 30_small.txt, 40_random.txt, 41_random.txt, 42_random.txt, 50_corner.txt, 51_corner.txt, 52_corner.txt
Case Name Status Exec Time Memory
00_sample.txt AC 122 ms 9668 KB
10_squares.txt AC 136 ms 10156 KB
11_maxw.txt AC 128 ms 10148 KB
12_maxh.txt AC 136 ms 10160 KB
20_corner.txt AC 127 ms 10136 KB
21_corner.txt AC 125 ms 10152 KB
22_corner.txt AC 126 ms 10200 KB
23_corner.txt AC 130 ms 10244 KB
24_corner.txt AC 126 ms 10148 KB
30_small.txt AC 128 ms 10152 KB
40_random.txt AC 128 ms 10164 KB
41_random.txt AC 122 ms 10152 KB
42_random.txt AC 124 ms 10152 KB
50_corner.txt AC 128 ms 10152 KB
51_corner.txt AC 132 ms 10164 KB
52_corner.txt AC 130 ms 10164 KB