Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stack>
- #include <string>
- using std::cin;
- using std::cout;
- using std::stack;
- using std::string;
- void merge_sort(int * array,int left,int right) {
- int mid;
- if(left+1<=right) {
- mid=(left+right)/2;
- merge_sort(array,left,mid);
- merge_sort(array,mid+1,right);
- int size1=mid-left+1, size2 = right-mid;
- int * L; int * R;
- L=new int[size1+1];
- R=new int[size2+1];
- for(int i=1;i<=size1; i++) {
- L[i-1]=array[left+i-1];
- }
- for(int j=1;j < size2+1; j++) {
- R[j-1]=array[mid+j];
- }
- for(int i=0,j=0,k=left; k<=right; k++) {
- if(i<size1 && j<size2) {
- if(L[i]<=R[j]) {
- array[k]=L[i];
- i++;
- } else {
- array[k]=R[j];
- j++;
- }
- } else if(i<size1) {
- array[k]=L[i];
- i++;
- } else {
- array[k]=R[j];
- j++;
- }
- }
- delete [] L; delete [] R;
- }
- }
- int main() {
- int n,m;
- cin >> n >> m;
- int* mas1 = new int[n];
- int* mas2 = new int[m];
- for(int i=0; i<n;++i){
- cin >> mas1[i];
- }
- for(int i=0; i<m;++i){
- cin >> mas2[i];
- }
- merge_sort(mas1,0,n-1);
- merge_sort(mas2,0,m-1);
- int i=0; int j=0;
- while(j+1<m && mas2[j]==mas2[j+1]){
- ++j;
- }
- while(i+1<n&&mas1[i]==mas1[i+1]){
- ++i;
- }
- for(;i<n && j<m;){
- if(mas1[i]!=mas2[j]){
- cout << "No";
- return 0;
- }
- ++i;
- while(i+1<n&&mas1[i]==mas1[i+1]){
- ++i;
- }
- ++j;
- while(j+1<m && mas2[j]==mas2[j+1]){
- ++j;
- }
- }
- if(i==n && j==m){
- cout << "Yes";
- }else{
- cout << "No";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement