Updating a Dictionary
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <map>
#include <string>
using namespace std;
int main(){
int t;
char s[110],ss[110];
string s1[110],s2[110],s3[110];
scanf("%d",&t);
while(t--){
map<string,string>q1,q2;
scanf("%s",s);
int aa=strlen(s);
string qq,ww;
int jia=0,jian=0,wu=0;
int js=0,jis=0,ws=0;
for (int i=0;i<aa;i++){
if (isalpha(s[i])){
qq+=s[i];
}
else if (isdigit(s[i])){
ww+=s[i];
}
else if (s[i]==','||s[i]=='}'){
q1[qq]=ww;
ww.clear();
qq.clear();
}
}
scanf("%s",ss);
int bb=strlen(ss);
for (int i=0;i<bb;i++){
if (isalpha(ss[i])){
qq+=ss[i];
}
else if (isdigit(ss[i])){
ww+=ss[i];
}
else if (ss[i]==','||ss[i]=='}'){
q2[qq]=ww;
if (!qq.empty()&&!q1.count(qq)){
jia=1;
s1[js++]=qq;
}
else if (!qq.empty()&&q1[qq]!=ww){
wu=1;
s3[ws++]=qq;
}
ww.clear();
qq.clear();
}
}
for (int i=0;i<aa;i++){
if (isalpha(s[i])){
qq+=s[i];
}
else if (isdigit(s[i])){
ww+=s[i];
}
else if (s[i]==','||s[i]=='}'){
if (!qq.empty()&&!q2.count(qq)){
jian=1;
s2[jis++]=qq;
}
ww.clear();
qq.clear();
}
}
if (jia){
sort(s1,s1+js);
printf("+");
for (int i=0;i<js;i++){
if (i==0){
cout<<s1[i];
}
else{
cout<<','<<s1[i];
}
}
printf("\n");
}
if (jian){
sort(s2,s2+jis);
printf("-");
for (int i=0;i<jis;i++){
if (i==0){
cout<<s2[i];
}
else{
cout<<','<<s2[i];
}
}
printf("\n");
}
if (wu){
sort(s3,s3+ws);
printf("*");
for (int i=0;i<ws;i++){
if (i==0){
cout<<s3[i];
}
else{
cout<<','<<s3[i];
}
}
printf("\n");
}
if (jia==0&&jian==0&&wu==0){
printf("No changes\n");
}
printf("\n");
}
return 0;
}