- #include <iostream> 
- #include <cstdlib> 
- #include <cstdlib> 
- #include <cstdio> 
- #include <cmath> 
- #include <algorithm> 
- using namespace std; 
-   
- template <class T> 
- class Set 
- { 
- public: 
-     T *p;       // change 
-     int n; 
-     Set(){ p=nullptr; n=0;  
-     }; 
-     Set(int n) 
-     { 
-         this->n = n; 
-         p = new T[n];   // change  
-     } 
-     ~Set() 
-     { 
-       if(p) delete []p;  
-     } 
-     void setValues(T k[],int l) // change signature 
-     { 
-     	if (n!=l) {          // if the size is the same, we'll reuse p, if not: 
-         	delete[] p;            // avoid the memory to leek  
-         	p= new T[l];           // start with a fresh memory  
-         	n = l;                 // define new length 
-     	} 
-         for (int i=0; i<l; i++)  
-             p[i]=k[i];				// copy array elements one by one  
-     } 
-     void add(T k) 
-     { 
-         auto p1 = p;    // improvement 
-         p = new T[n+1]; 
-         //p = p1;    nooooooooo !! 
- 		for (int i=0; i<n; i++) 
- 			p[i]=p1[i];  
-         delete []p1; 	// no more leaking 
-   
-         p[n] = k; 
-         n++; 
-     } 
-     void remove(T k) 
-     { 
-         //int l =0;      
-         //auto p1 = p;      // no need to reallocateimprovement 
-         //p = new T[n-1]; 
-         int removed=0;  
-         for(int i=0,j=0;i<n;i++) 
-             if(p[i]!=k)  
-             { 
-             	if (i!=j)  
-                 	p[j] = p[i]; 
-                 j++;  
-             } 
-             else removed++; 
-         n=n-removed;  
-     } 
-     void operator+(Set s) 
-     { 
-         for(int i=0;i<n;i++) 
-             p[i]+=s.p[i]; 
-     } 
-     void operator-(Set s) 
-     { 
-         for(int i=0;i<n;i++) 
-             p[i]-=s.p[i]; 
-     } 
-     void operator*(Set s) 
-     { 
-         for(int i=0;i<n;i++) 
-             p[i]*=s.p[i]; 
-     } 
-     void show() 
-     { 
-         for(int i=0;i<n;i++) 
-             cout<<p[i]<<" | "; 
-     } 
- }; 
- int main() 
- { 
-     Set<int> s1,s2; 
-     int arr[]={0,2,3,4,3,6}; 
-     int n=6; 
-     float arr2[]={0.5,12.1,1.7,23.15}; 
-     char arr3[]={'a','h','m','k','c','e'}; 
-     s1.setValues(arr,n); // <------------- here is error; 
-     s1.add(5); 
-     s1.remove(3); 
-     s1.show(); 
-   
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxjc3RkaW8+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlIDxjbGFzcyBUPgpjbGFzcyBTZXQKewpwdWJsaWM6CiAgICBUICpwOyAgICAgICAvLyBjaGFuZ2UKICAgIGludCBuOwogICAgU2V0KCl7IHA9bnVsbHB0cjsgbj0wOyAKICAgIH07CiAgICBTZXQoaW50IG4pCiAgICB7CiAgICAgICAgdGhpcy0+biA9IG47CiAgICAgICAgcCA9IG5ldyBUW25dOyAgIC8vIGNoYW5nZSAKICAgIH0KICAgIH5TZXQoKQogICAgewogICAgICBpZihwKSBkZWxldGUgW11wOyAKICAgIH0KICAgIHZvaWQgc2V0VmFsdWVzKFQga1tdLGludCBsKSAvLyBjaGFuZ2Ugc2lnbmF0dXJlCiAgICB7CiAgICAJaWYgKG4hPWwpIHsgICAgICAgICAgLy8gaWYgdGhlIHNpemUgaXMgdGhlIHNhbWUsIHdlJ2xsIHJldXNlIHAsIGlmIG5vdDoKICAgICAgICAJZGVsZXRlW10gcDsgICAgICAgICAgICAvLyBhdm9pZCB0aGUgbWVtb3J5IHRvIGxlZWsgCiAgICAgICAgCXA9IG5ldyBUW2xdOyAgICAgICAgICAgLy8gc3RhcnQgd2l0aCBhIGZyZXNoIG1lbW9yeSAKICAgICAgICAJbiA9IGw7ICAgICAgICAgICAgICAgICAvLyBkZWZpbmUgbmV3IGxlbmd0aAogICAgCX0KICAgICAgICBmb3IgKGludCBpPTA7IGk8bDsgaSsrKSAKICAgICAgICAgICAgcFtpXT1rW2ldOwkJCQkvLyBjb3B5IGFycmF5IGVsZW1lbnRzIG9uZSBieSBvbmUgCiAgICB9CiAgICB2b2lkIGFkZChUIGspCiAgICB7CiAgICAgICAgYXV0byBwMSA9IHA7ICAgIC8vIGltcHJvdmVtZW50CiAgICAgICAgcCA9IG5ldyBUW24rMV07CiAgICAgICAgLy9wID0gcDE7ICAgIG5vb29vb29vb28gISEKCQlmb3IgKGludCBpPTA7IGk8bjsgaSsrKQoJCQlwW2ldPXAxW2ldOyAKICAgICAgICBkZWxldGUgW11wMTsgCS8vIG5vIG1vcmUgbGVha2luZwogICAgICAKICAgICAgICBwW25dID0gazsKICAgICAgICBuKys7CiAgICB9CiAgICB2b2lkIHJlbW92ZShUIGspCiAgICB7CiAgICAgICAgLy9pbnQgbCA9MDsgICAgIAogICAgICAgIC8vYXV0byBwMSA9IHA7ICAgICAgLy8gbm8gbmVlZCB0byByZWFsbG9jYXRlaW1wcm92ZW1lbnQKICAgICAgICAvL3AgPSBuZXcgVFtuLTFdOwogICAgICAgIGludCByZW1vdmVkPTA7IAogICAgICAgIGZvcihpbnQgaT0wLGo9MDtpPG47aSsrKQogICAgICAgICAgICBpZihwW2ldIT1rKSAKICAgICAgICAgICAgewogICAgICAgICAgICAJaWYgKGkhPWopIAogICAgICAgICAgICAgICAgCXBbal0gPSBwW2ldOwogICAgICAgICAgICAgICAgaisrOyAKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHJlbW92ZWQrKzsKICAgICAgICBuPW4tcmVtb3ZlZDsgCiAgICB9CiAgICB2b2lkIG9wZXJhdG9yKyhTZXQgcykKICAgIHsKICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICBwW2ldKz1zLnBbaV07CiAgICB9CiAgICB2b2lkIG9wZXJhdG9yLShTZXQgcykKICAgIHsKICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICBwW2ldLT1zLnBbaV07CiAgICB9CiAgICB2b2lkIG9wZXJhdG9yKihTZXQgcykKICAgIHsKICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICBwW2ldKj1zLnBbaV07CiAgICB9CiAgICB2b2lkIHNob3coKQogICAgewogICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgIGNvdXQ8PHBbaV08PCIgfCAiOwogICAgfQp9OwppbnQgbWFpbigpCnsKICAgIFNldDxpbnQ+IHMxLHMyOwogICAgaW50IGFycltdPXswLDIsMyw0LDMsNn07CiAgICBpbnQgbj02OwogICAgZmxvYXQgYXJyMltdPXswLjUsMTIuMSwxLjcsMjMuMTV9OwogICAgY2hhciBhcnIzW109eydhJywnaCcsJ20nLCdrJywnYycsJ2UnfTsKICAgIHMxLnNldFZhbHVlcyhhcnIsbik7IC8vIDwtLS0tLS0tLS0tLS0tIGhlcmUgaXMgZXJyb3I7CiAgICBzMS5hZGQoNSk7CiAgICBzMS5yZW1vdmUoMyk7CiAgICBzMS5zaG93KCk7Cgp9