Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- int main()
- {
- int n,m;
- ifstream f("perechi6.in");
- f>>n;
- int x[n];
- for(int i=0;i<n;++i)
- f>>x[i];
- f>>m;
- int y[m];
- for(int i=0;i<m;++i)
- f>>y[i];
- int i=0,j=0;
- unsigned long long int sol=0;
- while(i<n&&j<m)
- if(x[i]<y[j])
- ++i;
- else
- if(x[i]>y[j])
- ++j;
- else /// Daca x[i]=y[j]
- {
- ++i,++j; /// Trecem la urmatoarele elemente din cei doi vectori
- int nrx=1,nry=1; /// Deocamdata avem doar cate un x si un y egale
- while(x[i-1]==x[i]&&i<n) /// Daca mai avem elemente x egale
- ++i,++nrx; /// le numaram si trecem la urmatorul x
- while(y[j-1]==y[j]&&j<m) /// Daca mai avem elemente y egale
- ++j,++nry; /// le numaram si trecem la urmatorul y
- sol+=1ULL*nrx*nry; /// Calculam numarul de perechi egale si le adaugam la solutie
- }
- while(i<n) /// Cat timp primul sir x nu a fost epuizat
- {
- if(x[i]==y[m-1]) /// Daca mai gasim valori x in sir egale cu ultimul y
- ++sol; /// inseamna c-am mai gasit o pereche de valori egale
- ++i;
- }
- while(j<m) /// Cat timp al doilea sir y nu a fost epuizat
- {
- if(y[j]==x[n-1]) /// Daca mai gasim valori y in sir egale cu ultimul x
- ++sol; /// inseamna c-am mai gasit o pereche de valori egale
- ++j;
- }
- ofstream g("perechi6.out");
- g<<sol;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment