Informatică, întrebare adresată de Dilau420, 8 ani în urmă

Problema ParImpar1 Pbinfo #2839
Cerința
Se dă un număr natural, n (n∈[2,5000]), și un șir de 2·n numere naturale din intervalul [0,5]. Se cere să se determine valoarea obținută însumând toate produsele de forma x·y, unde x și y sunt numere de paritate diferită, x fiind printre primii n termeni ai șirului dat, iar y printre ultimii n termeni ai acestui șir. Dacă nu există niciun astfel de produs, valoarea cerută este nulă.

Date de intrare
Fișierul de intrare parimpar1.in conține pe prima linie numărul n, iar pe a doua linie 2·n numere naturale separate prin spații.

Date de ieșire
Fișierul de ieșire parimpar1.out va conține pe prima linie numărul S, reprezentând suma cerută.

Restricții și precizări
Pentru determinarea numărului cerut utilizați un algoritm eficient din punctul de vedere al timpului de executare și al memoriei necesare.
Se recomandă evitarea memorării elementelor șirului dat într-un tablou sau în alte structuri de date similare.

Răspunsuri la întrebare

Răspuns de boiustef
4

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("parimpar1.in");

ofstream g("parimpar1.out");

short jum1[6], jum2[6], n, num, x, y;

long long s;

int main()

{

   f >> n;

   for (x=1; x<=n; ++x)

   {

      f >> num; ++jum1[num];

   }

   for (y=1; y<=n; ++y)

   {

      f >> num; ++jum2[num];

   }

   for (x=1; x<6; x+=2)

       for (y=2; y<5; y+=2)

           s=s+(x*jum1[x])*(y*jum2[y]);

   for (x=2; x<5; x+=2)

       for (y=1; y<6; y+=2)

           s=s+(x*jum1[x])*(y*jum2[y]);

   g << s;

}



boiustef: am folosit 2 vectori de frecventa a primei jumatati si celei de a doua
boiustef: in ultimele doua for am luat ca x sa ia valori impare, iar y pare:
apo x pare si y impare
boiustef: desenati pe hartie elementele date si completati vectorii lor de frecventa in prima jum si jum2 si vedeti ce produse trebuiesc luate
Alte întrebări interesante