Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<math.h>
- #include<algorithm>
- #include<string>
- #include<vector>
- #include<map>
- #include<sstream>
- #include <set>
- using namespace std;
- int main()
- {
- map<string, int> summa;
- summa["00"] = 0;
- summa["01"] = 0;
- summa["11"] = 0;
- summa["10"] = 0;
- vector<int> none;
- map<string, vector<int>> dct;
- dct["01"] = none;
- dct["10"] = none;
- int n;
- cin >> n;
- for(int i = 0; i < n; i++){
- string s;
- int k;
- cin >> k >> s;
- stringstream p1, q1;
- string p, q;
- p1 << s[0];
- q1 << s[k-1];
- p1 >> p;
- q1 >> q;
- string key = p + q;
- p1.clear();
- q1.clear();
- summa[key] += k;
- if(key[0] != key[1]){
- dct[key].push_back(k);
- }
- }
- sort(dct["01"].begin(), dct["01"].end());
- sort(dct["10"].begin(), dct["10"].end());
- int s1 = summa["00"];
- int s2 = summa["11"];
- int ln1 = dct["01"].size();
- int ln2 = dct["10"].size();
- if(ln1 == 0 && ln2 == 0){
- cout << max(s1, s2);
- }else{
- if(ln1 == ln2){
- cout << s1 + s2 + summa["01"] + summa["10"];
- }else if(ln1 > ln2){
- int x = summa["10"];
- for(int i = 0; i <= ln2; i++){
- x += dct["01"][ln1 - i - 1];
- }
- cout << x + s1 + s2;
- }else{
- int x = summa["01"];
- for(int i = 0; i <= ln1; i++){
- x += dct["10"][ln2 - i - 1];
- }
- cout << x + s1 + s2;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement