Loading...
ddrajko avatar ddrajko 5 Точки

Simple Loops 12. Equal Pairs

Здравейте,

Може ли някой да ми помогне?

Получавам по-малко точки за задачата, а мисля че JUDGE има грешка:

при вход:

7
34
-33
52
12
-32
32
23
41
7
25
34
23
124
21

Judje иска изход 88, а аз мисля че е 145/Сумата на последните две числа е 124+21=145, а на -32+32=0)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Equal_Pairs
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            double sumPairs = 0;
            double sumPairsMin = 99999999999999.0;
            double sumPairsMax = -99999999999999.0;

            int count = 0;
            for (int i = 1; i <= n; i++)
            {
                double numberOdd = double.Parse(Console.ReadLine());
                double numberEven = double.Parse(Console.ReadLine());
                sumPairs = sumPairs + numberOdd + numberEven;
                sumPairsMax = Math.Max(sumPairsMax, numberOdd + numberEven);
                sumPairsMin = Math.Min(sumPairsMin, numberEven + numberOdd);
                if (sumPairs/i==numberEven+numberOdd)
                {
                    count += 1;
                }                               
            }
            if (count==n)
            {
                Console.WriteLine($"Yes, value={sumPairsMax}");
            }
            else
            {
                Console.WriteLine($"No, maxdiff={sumPairsMax-sumPairsMin}");
            }
        }
    }
}

 

Тагове:
0
Programming Basics
ddrajko avatar ddrajko 5 Точки

Справих се!

Условието е за максимална разлика между 2 последователни двойки!

0
ramsess avatar ramsess 1 Точки

И как го направи?

Защото аз го направих с малко по различна логика?

http://pastebin.com/j9UV91Ju

0
15/02/2017 12:39:35
ddrajko avatar ddrajko 5 Точки

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Equal_Pairs
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            double sumPairs = 0;
            double sumPairsMin = 99999999999999.0;
            double sumPairsMax = -99999999999999.0;
            double sum1 = 0.0;
            double sum2 = 0.0;
            double diff = 0.0;
            int count = 0;
            for (int i = 1; i <= n; i++)
            {
                double numberOdd = double.Parse(Console.ReadLine());
                double numberEven = double.Parse(Console.ReadLine());
                if (i%2==1)
                {
                    sum1 = numberEven + numberOdd;
                }
                else
                {
                    sum2 = numberOdd + numberEven;
                }
                diff = Math.Max(diff, Math.Abs(sum1 - sum2));
                sumPairs = sumPairs + numberOdd + numberEven;
                sumPairsMax = Math.Max(sumPairsMax, numberOdd + numberEven);
                sumPairsMin = Math.Min(sumPairsMin, numberEven + numberOdd);
                if (sumPairs/i==numberEven+numberOdd)
                {
                    count += 1;
                }                               
            }
            if (count==n)
            {
                Console.WriteLine($"Yes, value={sumPairsMax}");
            }
            else if(n>2)
            {
                Console.WriteLine($"No, maxdiff={diff}");
            }
            else
            {
                Console.WriteLine($"No, maxdiff={sumPairsMax - sumPairsMin}");
            }
        }
    }
}

 

0
ddrajko avatar ddrajko 5 Точки

Това е решението ми,

Ако имаш въпроси пиши

0
ramsess avatar ramsess 1 Точки

Защо търсиш максимална и минимална разлика?

0
ddrajko avatar ddrajko 5 Точки

Първо я търсих, защото не бях разбрал правилно условието за максимална разлика между 2 последователни двойки.

После ги използвах, защото ако n =1 или 2, се получава некоректно

0
ramsess avatar ramsess 1 Точки

Добре както си го направил така :) само една препоръка: когато търсиш максимално число почвай от double.MinValue което е възможна най малката стойност на double (-1.7976931348623157E+308) в общия случай и така както си го направил ще работи но с MinValue е по четим и правилен кода. Аналогично ако търсиш най-малкото число double.MaxValue. Това върви и за другите числови променливи (int и decimal).

0
15/02/2017 18:58:08
ddrajko avatar ddrajko 5 Точки

Ок!

Благодаря!

0
thereishope avatar thereishope 77 Точки

Ето го моето решение, мисля че е грешно въпреки,че дава 100 точки :D

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EqualPairs
{
    class Program
    {
        static void Main(string[] args)
        {
            var n = int.Parse(Console.ReadLine());
            var SUM = 0;
            var difference = 0;
            var previous = 0;
            var maxDiff = 0;

            for (int i = 0; i < n; i++)
            {
                var n1 = int.Parse(Console.ReadLine());
                var n2 = int.Parse(Console.ReadLine());
                SUM = n1 + n2;
                difference = Math.Abs(n1 + n2 - previous);
                previous = SUM;
                if (difference > maxDiff && SUM != difference)
              {
                   maxDiff = difference;
              }
            }
            if (difference != 0 && SUM != difference)
            {
                Console.WriteLine("No, maxdiff={0}",maxDiff);
            }
            else
            {
                Console.WriteLine("Yes, value={0}",SUM);
            }
        }
    }
}
 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.