Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.86 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <unordered_map>
  5.  
  6. using namespace std;
  7.  
  8.  
  9.  
  10.  
  11. int main() {
  12. unordered_map <string, vector<int> > umap;
  13. unordered_map <string, unordered_map<string,int> > menu;
  14. unordered_map <string, vector<double> > kal;
  15. vector <string> dish(0);
  16. int n;
  17. cin >> n;
  18. for (int i = 0; i < n; i++) {
  19. string d;
  20. cin >> d;
  21. dish.push_back(d);
  22. kal[dish[i]] = vector<double>(4);
  23. kal[dish[i]][0] = 0;
  24. kal[dish[i]][1] = 0;
  25. kal[dish[i]][2] = 0;
  26. kal[dish[i]][3] = 0;
  27. int c, z;
  28. cin >> c >> z;
  29. for (int j = 0; j < z; j++) {
  30. string s;
  31. cin >> s;
  32. int a;
  33. cin >> a;
  34. string u;
  35. cin >> u;
  36. if (u == "kg" || u == "l") {
  37. if (umap.find(s) == umap.end()) {
  38. umap.insert(make_pair(s, vector<int>(1,c*a*1000)));
  39. menu[d][s] = a*1000;
  40. } else {
  41. umap[s][0] += (c*a*1000);
  42. menu[d][s] = a*1000;
  43. }
  44. } else if (u == "tens") {
  45. if (umap.find(s) == umap.end()) {
  46. umap.insert(make_pair(s, vector<int>(1,c*a*10)));
  47. menu[d][s] = a*10;
  48. } else {
  49. umap[s][0] += (c*a*10);
  50. menu[d][s] = a*10;
  51. }
  52. } else {
  53. if (umap.find(s) == umap.end()) {
  54. umap.insert(make_pair(s, vector<int>(1,c*a)));
  55. menu[d][s] = a;
  56. } else {
  57. umap[s][0] += (c*a);
  58. menu[d][s] = a;
  59. }
  60. }
  61. }
  62. }
  63.  
  64. vector<int> ing(0);
  65. vector<string> name(0);
  66. int cost = 0;
  67. int k;
  68. cin >> k;
  69. for (int i = 0; i < k; i++) {
  70. string t;
  71. cin >> t;
  72. name.push_back(t);
  73. int p;
  74. cin >> p;
  75. int a;
  76. cin >> a;
  77. string u;
  78. cin >> u;
  79. if (umap.find(t) == umap.end()) {
  80. ing.push_back(0);
  81. } else {
  82. if (u == "kg" || u == "l") {
  83. int v = umap[t][0]/(a*1000);
  84. if (umap[t][0]%(a*1000) > 0) {
  85. ing.push_back(v + 1);
  86. cost += (v+1)*p;
  87. } else {
  88. ing.push_back(v);
  89. cost += (v)*p;
  90. }
  91. } else if (u == "tens") {
  92. int v = umap[t][0]/(a*10);
  93. if (umap[t][0]%(a*10) > 0) {
  94. ing.push_back(v + 1);
  95. cost += (v+1)*p;
  96. } else {
  97. ing.push_back(v);
  98. cost += (v)*p;
  99. }
  100. } else {
  101. int v = umap[t][0]/(a);
  102. if (umap[t][0]%(a) > 0) {
  103. ing.push_back(v + 1);
  104. cost += (v+1)*p;
  105. } else {
  106. ing.push_back(v);
  107. cost += (v)*p;
  108. }
  109. }
  110. }
  111. }
  112.  
  113.  
  114.  
  115. int m;
  116. cin >> m;
  117. for (int i = 0; i < m; i++) {
  118. string t;
  119. cin >> t;
  120. int a;
  121. cin >> a;
  122. string u;
  123. cin >> u;
  124. double pr, f, ch, fv;
  125. cin >> pr >> f >> ch >> fv;
  126. for (int j = 0; j < n; j++) {
  127. if (menu[dish[j]].find(t) == menu[dish[j]].end()) {
  128. continue;
  129. } else {
  130. if (u == "kg" || u == "l") {
  131. kal[dish[j]][0] += (menu[dish[j]][t]*pr/(a*1000));
  132. kal[dish[j]][1] += (menu[dish[j]][t]*f/(a*1000));
  133. kal[dish[j]][2] += (menu[dish[j]][t]*ch/(a*1000));
  134. kal[dish[j]][3] += (menu[dish[j]][t]*fv/(a*1000));
  135.  
  136. } else if (u == "tens") {
  137. kal[dish[j]][0] += (menu[dish[j]][t]*pr/(a*10));
  138. kal[dish[j]][1] += (menu[dish[j]][t]*f/(a*10));
  139. kal[dish[j]][2] += (menu[dish[j]][t]*ch/(a*10));
  140. kal[dish[j]][3] += (menu[dish[j]][t]*fv/(a*10));
  141. } else {
  142. kal[dish[j]][0] += (menu[dish[j]][t]*pr/(a));
  143. kal[dish[j]][1] += (menu[dish[j]][t]*f/(a));
  144. kal[dish[j]][2] += (menu[dish[j]][t]*ch/(a));
  145. kal[dish[j]][3] += (menu[dish[j]][t]*fv/(a));
  146. }
  147. }
  148. }
  149. }
  150.  
  151. cout << cost << '\n';
  152. for (int i = 0; i < k; i++) {
  153. cout << name[i] << ' ' << ing[i] << '\n';
  154. }
  155. for (int i = 0; i < n; i++) {
  156. cout << dish[i] << ' ' << kal[dish[i]][0] << ' ' << kal[dish[i]][1] << ' '
  157. << kal[dish[i]][2] << ' ' << kal[dish[i]][3] << '\n';
  158. }
  159.  
  160.  
  161.  
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement