👤

va rog frumos sa ma ajutati cu urmatoarea problema, o incerc de ceva timp dar primesc doar 50 de pct:
Aveti detalii in poze:

problema - #2419 Intalnire

Cerința

Doi prieteni se afla pe axa Ox, in puncte cu coordonate întregi. Primul se află în punctul x1 = a, iar al doilea se află în punctul x2 = b. Fiecare se poate mișca cu o poziție, la stânga sau la dreapta, de un număr nelimitat de ori. Când se mișcă, oboseala se modifică după următoarea regulă: la prima mișcare oboseala crește cu 1, la a doua mișcare oboseala crește cu 2, la a treia cu 3 și asa mai departe. De exemplu, dacă un prieten se mișcă mai întâi la stânga, apoi la dreapta, și apoi iar la stânga, oboseala lui devine 1 + 2 + 3 = 6.

Prietenii vor să se întâlnească într-un punct cu coordonata număr întreg. Aflați oboseala totală minimă pe care cei doi cei doi o vor acumula.


Va Rog Frumos Sa Ma Ajutati Cu Urmatoarea Problema O Incerc De Ceva Timp Dar Primesc Doar 50 De Pct Aveti Detalii In Poze Problema 2419 Intalnire Cerința Doi Pr class=
Va Rog Frumos Sa Ma Ajutati Cu Urmatoarea Problema O Incerc De Ceva Timp Dar Primesc Doar 50 De Pct Aveti Detalii In Poze Problema 2419 Intalnire Cerința Doi Pr class=

Răspuns :

#include <iostream>

using namespace std;

long long a,b,s,dif,s1,s2, mij;

int main()

{

   cin >> a >> b;

   if (a>b) dif=a-b;

   else dif=b-a;

    mij=dif/2;

    if (mij%2==0) s1=(mij/2)*(1+mij);

     else s1=mij*((1+mij)/2);

   if (dif%2==0)

   {

     s=2*s1;

   }

   else

   {

       if ((mij+1)%2==0) s2=((mij+1)/2)*(2+mij);

       else s2=((2+mij)/2)*(mij+1);

       s=s1+s2;

   }

   cout << s;

}