Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<fstream>
- using namespace std;
- int n; // numarul sirurilor
- int D[100]; // vector al lungimilor sirurilor
- int M[100][100];// matricea in care memorez sirurile
- int read_data()
- {
- fstream f;
- f.open("input.dat",ios::in);
- f>>n;
- for(int i=1;i<=n;i++)
- {
- f>>D[i];
- for(int j=1;j<=D[i];j++)
- f>>M[i][j];
- }
- }
- int verify_data()
- {
- for(int i=1;i<=n+1;i++)
- { cout<<endl;
- for(int j=1;j<=D[i];j++) cout<<M[i][j]<<" ";
- }
- }
- int merge_strings(int r1,int r2,int line)
- {
- // interclasam randul r1 cu randul r2 si depunem
- // rezultat in rand n+1
- int aux[100];
- int i,j,k;
- i=1;j=1;k=1;
- while ((i<=D[r1])&&(j<=D[r2]))
- {
- if (M[r1][i]<M[r2][j]) {
- aux[k]=M[r1][i];
- k=k+1;
- i=i+1;
- }
- else
- if (M[r1][i]>M[r2][j]) {
- aux[k]=M[r2][j];
- k=k+1;
- j=j+1;
- }
- else {
- aux[k]=M[r1][i];
- aux[k+1]=M[r1][i];
- k=k+2;
- i=i+1;
- j=j+1;
- }
- }
- if ((i<=D[r1])&&(j>D[r2]))
- {
- for(j=i;j<=D[r1];j++)
- {
- aux[k]=M[r1][j];
- k=k+1;
- }
- }
- else
- if ((i>D[r1])&&(j<=D[r2]))
- {
- for(i=j;i<=D[r2];i++)
- {
- aux[k]=M[r2][i];
- k=k+1;
- }
- }
- D[line]=D[r1]+D[r2];
- for(int i=1;i<=D[line];i++)
- M[line][i]=aux[i];
- }
- int sort_data()
- {
- // ordoneaza cele n siruri in ordinea crescatoare a
- // lungimilor lor
- }
- int merge_data()
- {
- sort_data();
- merge_strings(1,2,n+1);
- for(int i=3;i<=n;i++)
- merge_strings(i,n+1,n+1);
- }
- int main()
- {
- read_data();
- verify_data();
- merge_data();
- verify_data();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement