a53

Perechi6

a53
Aug 26th, 2022
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.56 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6. int n,m;
  7. ifstream f("perechi6.in");
  8. f>>n;
  9. int x[n];
  10. for(int i=0;i<n;++i)
  11. f>>x[i];
  12. f>>m;
  13. int y[m];
  14. for(int i=0;i<m;++i)
  15. f>>y[i];
  16. int i=0,j=0;
  17. unsigned long long int sol=0;
  18. while(i<n&&j<m)
  19. if(x[i]<y[j])
  20. ++i;
  21. else
  22. if(x[i]>y[j])
  23. ++j;
  24. else /// Daca x[i]=y[j]
  25. {
  26. ++i,++j; /// Trecem la urmatoarele elemente din cei doi vectori
  27. int nrx=1,nry=1; /// Deocamdata avem doar cate un x si un y egale
  28. while(x[i-1]==x[i]&&i<n) /// Daca mai avem elemente x egale
  29. ++i,++nrx; /// le numaram si trecem la urmatorul x
  30. while(y[j-1]==y[j]&&j<m) /// Daca mai avem elemente y egale
  31. ++j,++nry; /// le numaram si trecem la urmatorul y
  32. sol+=1ULL*nrx*nry; /// Calculam numarul de perechi egale si le adaugam la solutie
  33. }
  34. while(i<n) /// Cat timp primul sir x nu a fost epuizat
  35. {
  36. if(x[i]==y[m-1]) /// Daca mai gasim valori x in sir egale cu ultimul y
  37. ++sol; /// inseamna c-am mai gasit o pereche de valori egale
  38. ++i;
  39. }
  40. while(j<m) /// Cat timp al doilea sir y nu a fost epuizat
  41. {
  42. if(y[j]==x[n-1]) /// Daca mai gasim valori y in sir egale cu ultimul x
  43. ++sol; /// inseamna c-am mai gasit o pereche de valori egale
  44. ++j;
  45. }
  46. ofstream g("perechi6.out");
  47. g<<sol;
  48. return 0;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment