예제 #1
0
        public static void Solve(Stream stdin, Stream stdout)
        {
            IScanner scanner = new OptimizedPositiveIntReader(stdin);
            // uncomment when you need more advanced reader
            // scanner = new Scanner(stdin);
            // scanner = new LineReader(stdin);
            var writer = new BufferedStdoutWriter(stdout);

            var input = scanner.NextInt();

            writer.Write(input*5);
            writer.Write("\n");
            writer.Flush();
        }
        public void OptimizedReader_Should_Return9_When_9()
        {
            // Arrange
            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes("9")))
            {
                var target = new OptimizedPositiveIntReader(ms);

                // Act
                var result = target.NextInt();

                // Assert
                Assert.That(result, Is.EqualTo(9));
            }
        }
예제 #3
0
        public static void Solve(Stream stdin, Stream stdout)
        {
            IScanner scanner = new OptimizedPositiveIntReader(stdin);
            // uncomment when you need more advanced reader
            // scanner = new Scanner(stdin);
            // scanner = new LineReader(stdin);
            var writer = new BufferedStdoutWriter(stdout);

            // players
            var n = scanner.NextInt();

            // connections
            var m = scanner.NextInt();

            Dictionary<int, HashSet<int>> connections = new Dictionary<int, HashSet<int>>();

            for (int i = 0; i < m; i++)
            {
                var a = scanner.NextInt();
                var b = scanner.NextInt();

                if (!connections.ContainsKey(a))
                {
                    connections.Add(a, new HashSet<int>());
                }
                connections[a].Add(b);

                if (!connections.ContainsKey(b))
                {
                    connections.Add(b, new HashSet<int>());
                }
                connections[b].Add(a);
            }

            // early exit
            if (connections.Count != n)
            {
                writer.Write("Impossible\n");
                writer.Flush();
                return;
            }

            var root = connections.OrderBy(c => c.Value.Count).First().Key;

            var solution = TraverseTree(root, new Tuple<HashSet<int>, HashSet<int>>(new HashSet<int>(), new HashSet<int>()), connections);

            if (solution.Item1.Count == n)
            {
                foreach (var node in solution.Item1)
                {
                    writer.Write(node);
                    writer.Write("\n");
                }
            }
            else
            {
                writer.Write("Impossible\n");
            }

            writer.Flush();
        }
예제 #4
0
        public static void Solve(Stream stdin, Stream stdout)
        {
            IScanner scanner = new OptimizedPositiveIntReader(stdin);
            // uncomment when you need more advanced reader
            // scanner = new Scanner(stdin);
            // scanner = new LineReader(stdin);
            var writer = new BufferedStdoutWriter(stdout);

            var n = scanner.NextInt();
            var m = scanner.NextInt();

            if (n == 1)
            {
                writer.Write(1);
                writer.Write("\n");
                writer.Flush();
                return;
            }

            var meetings = new Dictionary<int, HashSet<int>>(n);

            for (int i = 0; i < m; i++)
            {
                int a = scanner.NextInt();
                int b = scanner.NextInt();

                HashSet<int> forA;
                if (meetings.ContainsKey(a))
                {
                    forA = meetings[a];

                    if (!forA.Contains(b))
                        forA.Add(b);
                }
                else
                {
                    forA = new HashSet<int> { b };
                    meetings.Add(a, forA);
                }

                HashSet<int> forB;
                if (meetings.ContainsKey(b))
                {
                    forB = meetings[b];

                    if (!forB.Contains(a))
                        forB.Add(a);
                }
                else
                {
                    forB = new HashSet<int> { a };
                    meetings.Add(b, forB);
                }
            }

            var result = 0;

            foreach (var meeting in meetings.OrderByDescending(g => g.Value.Count))
            {
                // we know that for key all connections are there
                var everyoneBumped = new HashSet<int> { meeting.Key };
                Debug.WriteLine("Checking " + meeting.Key + " with: " + string.Join(", ", meeting.Value));

                for (int j = 0; j < meeting.Value.Count; j++)
                {
                    var personA = meeting.Value.ElementAt(j);

                    for (int i = j + 1; i < meeting.Value.Count; i++)
                    {
                        var personB = meeting.Value.ElementAt(i);
                        //Debug.WriteLine("Looking for {0} =? {1}", personA, personB);
                        if (!meetings[personA].Contains(personB))
                        {
                            //Debug.WriteLine("{0} <-> {1} not found", personA, personB);
                            personA = -1;
                            break;
                        }
                    }

                    if (personA > 0)
                        everyoneBumped.Add(personA);
                }

                Debug.WriteLine("Found group: " + string.Join(", ", everyoneBumped));
                result = Math.Max(everyoneBumped.Count, result);
            }

            writer.Write(result);
            writer.Write("\n");
            writer.Flush();
        }
예제 #5
0
        public static void Solve(Stream stdin, Stream stdout)
        {
            IScanner scanner = new OptimizedPositiveIntReader(stdin);
            // uncomment when you need more advanced reader
            // scanner = new Scanner(stdin);
            // scanner = new LineReader(stdin);
            var writer = new BufferedStdoutWriter(stdout);

            var n = scanner.NextInt();

            var a = new int[n];
            var b = new int[n];

            for (var i = 0; i < n; i++)
            {
                a[i] = scanner.NextInt();
            }

            for (var i = 0; i < n; i++)
            {
                b[i] = scanner.NextInt();
            }

            var result = SolutionCompacting(a, b);

            writer.Write(result);
            writer.Write("\n");
            writer.Flush();
        }
        public void OptimizedReader_Should_ThrowException_When_StreamEmpty()
        {
            // Arrange
            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes("")))
            {
                var target = new OptimizedPositiveIntReader(ms);

                // Act
                target.NextInt();
            }
        }