Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- ifstream f("matrice_rara.in");
- ofstream g("matrice_rara.out");
- int n,m,n1,n2,k;
- struct matrice_rara
- {
- int linie,coloana,valoare;
- };
- typedef matrice_rara MR;
- MR A[300001],B[300001],C[600001];
- void citire_A()
- {
- for(int i=1;i<=n1;i++)
- f>>A[i].linie>>A[i].coloana>>A[i].valoare;
- }
- void citire_B()
- {
- for(int i=1;i<=n2;i++)
- f>>B[i].linie>>B[i].coloana>>B[i].valoare;
- }
- void adunare()
- {
- int i=1,j=1;
- k=1;
- while(i<=n1&&j<=n2)
- {
- if(A[i].linie<B[j].linie)
- C[k].linie=A[i].linie,C[k].coloana=A[i].coloana,C[k].valoare=A[i].valoare,++i,++k;
- else
- {
- if(A[i].linie==B[j].linie)
- {
- if(A[i].coloana<B[j].coloana)
- C[k].linie=A[i].linie,C[k].coloana=A[i].coloana,C[k].valoare=A[i].valoare,++i,++k;
- else
- {
- if(A[i].coloana==B[j].coloana)
- {
- if(A[i].valoare+B[j].valoare==0)
- ++i,++j;
- else
- C[k].linie=A[i].linie,C[k].coloana=A[i].coloana,C[k].valoare=A[i].valoare+B[j].valoare,++i,++j,++k;
- }
- else
- C[k].linie=B[j].linie,C[k].coloana=B[j].coloana,C[k].valoare=B[j].valoare,++j,++k;
- }
- }
- else
- if(B[j].linie<A[i].linie)
- C[k].linie=B[j].linie,C[k].coloana=B[j].coloana,C[k].valoare=B[j].valoare,++j,++k;
- }
- }
- while(i<=n1)
- C[k].linie=A[i].linie,C[k].coloana=A[i].coloana,C[k].valoare=A[i].valoare,++i,++k;
- while(j<=n2)
- C[k].linie=B[j].linie,C[k].coloana=B[j].coloana,C[k].valoare=B[j].valoare,++j,++k;
- }
- void afisare()
- {
- for(int i=1;i<k;i++)
- g<<C[i].linie<<' '<<C[i].coloana<<' '<<C[i].valoare<<'\n';
- }
- int main()
- {
- f>>n>>m>>n1>>n2;
- citire_A();
- citire_B();
- adunare();
- g<<k-1<<'\n';
- afisare();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement