UVA12504 - Updating a Dictionary

来源:互联网 发布:python二分查找 编辑:程序博客网 时间:2024/05/21 12:12
#include<iostream>#include<algorithm>#include<cstdio>#include<vector>#include<set>#include<map>using namespace std;struct key_value{    string key,value;};set<string>key;vector<string>change[3];map<string,string> dict[2];int main(){    int t, flag = 1;    key_value x,y;    cin >> t;    while(t--){        dict[0].clear();        dict[1].clear();        for(int i = 0; i < 3; i++) change[i].clear();        change[0].push_back("+");        change[1].push_back("-");        change[2].push_back("*");        key.clear();        char c;        for(int i = 0; i < 2; ){            c = getchar();            if(c == '{'){                flag = 1;                x = y;                continue;            }            if(c == '}'){                if(x.key != "" && x.value != ""){                    dict[i][x.key] = x.value;                    key.insert(x.key);                }                i++;                getchar();                continue;            }            if(c == ',' || c == ':'){                flag = !flag;                if(c == ','){                    dict[i][x.key] = x.value;                    key.insert(x.key);                    x = y;                }                continue;            }            if(flag) x.key += c;            else x.value += c;        }        for(set<string>::iterator it = key.begin(); it != key.end(); it++){            if(!dict[0].count(*it)) change[0].push_back(*it);            else if(!dict[1].count(*it)) change[1].push_back(*it);            else if(dict[0][*it] != dict[1][*it]) change[2].push_back(*it);        }        int k = 0;        for(int i = 0; i < 3; i++){            int first = 2;            if(change[i].size() - 1){                for(int j = 0; j < change[i].size(); j++){                    if(first) first--;                    else cout << ",";                    cout << change[i][j];                }                cout << endl;                k++;            }        }        if(!k) cout << "No changes" << endl;        cout << endl;    }    return 0;}

0 0
原创粉丝点击