Advertisement
Guest User

Untitled

a guest
Nov 17th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. #include<iostream>
  2. #include<math.h>
  3. #include<algorithm>
  4. #include<string>
  5. #include<vector>
  6. #include<map>
  7. #include<sstream>
  8. #include <set>
  9. using namespace std;
  10. int main()
  11. {
  12. map<string, int> summa;
  13. summa["00"] = 0;
  14. summa["01"] = 0;
  15. summa["11"] = 0;
  16. summa["10"] = 0;
  17. vector<int> none;
  18. map<string, vector<int>> dct;
  19. dct["01"] = none;
  20. dct["10"] = none;
  21. int n;
  22. cin >> n;
  23. for(int i = 0; i < n; i++){
  24. string s;
  25. int k;
  26. cin >> k >> s;
  27. stringstream p1, q1;
  28. string p, q;
  29. p1 << s[0];
  30. q1 << s[k-1];
  31. p1 >> p;
  32. q1 >> q;
  33. string key = p + q;
  34. p1.clear();
  35. q1.clear();
  36. summa[key] += k;
  37. if(key[0] != key[1]){
  38. dct[key].push_back(k);
  39. }
  40. }
  41. sort(dct["01"].begin(), dct["01"].end());
  42. sort(dct["10"].begin(), dct["10"].end());
  43. int s1 = summa["00"];
  44. int s2 = summa["11"];
  45. int ln1 = dct["01"].size();
  46. int ln2 = dct["10"].size();
  47. if(ln1 == 0 && ln2 == 0){
  48. cout << max(s1, s2);
  49. }else{
  50. if(ln1 == ln2){
  51. cout << s1 + s2 + summa["01"] + summa["10"];
  52. }else if(ln1 > ln2){
  53. int x = summa["10"];
  54. for(int i = 0; i <= ln2; i++){
  55. x += dct["01"][ln1 - i - 1];
  56. }
  57. cout << x + s1 + s2;
  58. }else{
  59. int x = summa["01"];
  60. for(int i = 0; i <= ln1; i++){
  61. x += dct["10"][ln2 - i - 1];
  62. }
  63. cout << x + s1 + s2;
  64. }
  65. }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement