// Online C++ compiler to run C++ program online
#include <iostream>
#include <string>
using namespace std;
class string_pair {
public:
string_pair(const string & one = "", const string & two = "")
: first(new string(one)), second(new string(two)) { }
string_pair(const string_pair & rhs) {
first = new string(*rhs.first);
second = new string(*rhs.second);
}
~string_pair() {
delete first;
delete second;
}
string_pair & operator=(const string_pair & rhs) {
if (this != &rhs) {
delete first;
delete second;
first = new string(*rhs.first);
second = new string(*(rhs.second));
}
return *this;
}
const string & get_first() const {
return *first;
}
const string & get_second() const {
return *second;
}
string to_string() {
return "(" + *first + ", " + *second + ")";
}
private:
string * first;
string * second;
};
int main() {
// Write C++ code here
std::cout << "Try programiz.pro";
string_pair s1("first", "second");
string_pair s2("a", "b");
s1=s2;
cout<< s1.to_string() <<endl;
string_pair s3(s2);
cout<< s3.to_string() <<endl;
string_pair s4("c","d");
s2=s4;
cout<< s2.to_string() <<endl;
cout<< s3.to_string() <<endl;
return 0;
}
Ly8gT25saW5lIEMrKyBjb21waWxlciB0byBydW4gQysrIHByb2dyYW0gb25saW5lCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKICAgIGNsYXNzIHN0cmluZ19wYWlyIHsKICAgIHB1YmxpYzoKICAgICAgICBzdHJpbmdfcGFpcihjb25zdCBzdHJpbmcgJiBvbmUgPSAiIiwgY29uc3Qgc3RyaW5nICYgdHdvID0gIiIpCiAgICAgICAgICAgIDogZmlyc3QobmV3IHN0cmluZyhvbmUpKSwgc2Vjb25kKG5ldyBzdHJpbmcodHdvKSkgeyB9CiAgICAKICAgICAgICBzdHJpbmdfcGFpcihjb25zdCBzdHJpbmdfcGFpciAmIHJocykgewogICAgICAgICAgICBmaXJzdCA9IG5ldyBzdHJpbmcoKnJocy5maXJzdCk7CiAgICAgICAgICAgIHNlY29uZCA9IG5ldyBzdHJpbmcoKnJocy5zZWNvbmQpOwogICAgICAgIH0KICAgIAogICAgICAgIH5zdHJpbmdfcGFpcigpIHsKICAgICAgICAgICAgZGVsZXRlIGZpcnN0OwogICAgICAgICAgICBkZWxldGUgc2Vjb25kOwogICAgICAgIH0KICAgIAogICAgICAgIHN0cmluZ19wYWlyICYgb3BlcmF0b3I9KGNvbnN0IHN0cmluZ19wYWlyICYgcmhzKSB7CiAgICAgICAgICAgIGlmICh0aGlzICE9ICZyaHMpIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSBmaXJzdDsKICAgICAgICAgICAgICAgIGRlbGV0ZSBzZWNvbmQ7CiAgICAgICAgICAgICAgICBmaXJzdCA9IG5ldyBzdHJpbmcoKnJocy5maXJzdCk7CiAgICAgICAgICAgICAgICBzZWNvbmQgPSBuZXcgc3RyaW5nKCoocmhzLnNlY29uZCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICB9CiAgICAKICAgICAgICBjb25zdCBzdHJpbmcgJiBnZXRfZmlyc3QoKSBjb25zdCB7CiAgICAgICAgICAgIHJldHVybiAqZmlyc3Q7CiAgICAgICAgfQogICAgCiAgICAgICAgY29uc3Qgc3RyaW5nICYgZ2V0X3NlY29uZCgpIGNvbnN0IHsKICAgICAgICAgICAgcmV0dXJuICpzZWNvbmQ7CiAgICAgICAgfQogICAgCiAgICAgICAgc3RyaW5nIHRvX3N0cmluZygpIHsKICAgICAgICAgICAgcmV0dXJuICIoIiArICpmaXJzdCArICIsICIgKyAqc2Vjb25kICsgIikiOwogICAgICAgIH0KICAgIHByaXZhdGU6CiAgICAgICAgc3RyaW5nICogZmlyc3Q7CiAgICAgICAgc3RyaW5nICogc2Vjb25kOwogICAgfTsKCmludCBtYWluKCkgewogICAgLy8gV3JpdGUgQysrIGNvZGUgaGVyZQogICAgc3RkOjpjb3V0IDw8ICJUcnkgcHJvZ3JhbWl6LnBybyI7CiAgICBzdHJpbmdfcGFpciBzMSgiZmlyc3QiLCAic2Vjb25kIik7CiAgICAKICAgIHN0cmluZ19wYWlyIHMyKCJhIiwgImIiKTsKICAgIAogICAgczE9czI7CiAgICAKICAgIGNvdXQ8PCBzMS50b19zdHJpbmcoKSA8PGVuZGw7CiAgICAKICAgIHN0cmluZ19wYWlyIHMzKHMyKTsKICAgIAogICAgY291dDw8IHMzLnRvX3N0cmluZygpIDw8ZW5kbDsKICAgIAogICAgc3RyaW5nX3BhaXIgczQoImMiLCJkIik7CiAgICBzMj1zNDsKICAgIGNvdXQ8PCBzMi50b19zdHJpbmcoKSA8PGVuZGw7CiAgICAgY291dDw8IHMzLnRvX3N0cmluZygpIDw8ZW5kbDsKICAgIAogICAgcmV0dXJuIDA7Cn0=