Advertisement
Guest User

Untitled

a guest
Nov 11th, 2019
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.24 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. using namespace std;
  4.  
  5. struct info {
  6. double belki, jir, ugl, energy;
  7.  
  8. };
  9.  
  10.  
  11. int main() {
  12.  
  13. int n;
  14. cin>>n;
  15. map <string,vector <pair<string,int> > > dishes;//name, list of ingred {name,number}
  16. map <string,int> ingred; //name, kolichestvo for all dishes
  17. for (int i = 0; i < n; i++) // dishes
  18. {
  19. string d;
  20. cin>>d;
  21. int c,z;
  22. cin>>c>>z;
  23. vector <string> ingred_for_dish;
  24. for (int j = 0; j < z; j++) // info about dishes
  25. {
  26. string s,u;
  27. cin>>s;
  28.  
  29. int a;
  30. cin>>a>>u;
  31. if (u == "kg") a *= 1000;
  32. if (u == "l") a *= 1000;
  33. if (u == "tens") a *= 10;
  34. if (ingred.find(s) != ingred.end())
  35. {
  36. ingred[s] += c*a;
  37. }
  38. else
  39. {
  40. ingred.insert({s,c*a});
  41. }
  42. ingred_for_dish.push_back({s,c*a});
  43.  
  44. }
  45. dishes.insert({d,ingred_for_dish});
  46. }
  47. int k;
  48. cin>>k;
  49.  
  50. map<string,pair<int,int> > prices; // name, price, number in the box
  51.  
  52. for (int i = 0; i < k; i++)
  53. {
  54. string t;
  55. cin>>t;
  56. int p; // price
  57. cin>>p;
  58. int a; //number of ingredient
  59. cin>>a;
  60. string u;
  61. cin>>u;
  62. if (u == "kg") a *= 1000;
  63. if (u == "l") a *= 1000;
  64. if (u == "tens") a *= 10;
  65. prices.insert({t,{p,a}});
  66. }
  67.  
  68. int m;
  69. cin>>m;
  70.  
  71. map<string,pair< int,info> > INFO; //name, size , info
  72.  
  73. for (int i = 0; i < m; i++)
  74. {
  75. string t;
  76. cin>>t;
  77. int a; //number of ingredient for so fat & etc
  78. cin>>a;
  79. string u;
  80. cin>>u;
  81. if (u == "kg") a *= 1000;
  82. if (u == "l") a *= 1000;
  83. if (u == "tens") a *= 10;
  84. double belki, jir, ugl, energy;
  85.  
  86. info in;
  87.  
  88. cin>>belki>>jir>>ugl>>energy;
  89. in.belki = belki;
  90. in.jir = jir;
  91. in.ugl = ugl;
  92. in.energy = energy;
  93. INFO.insert({t,{a,info}});
  94.  
  95. }
  96.  
  97.  
  98. int sum = 0;
  99.  
  100. vector <int> ans_1;
  101.  
  102. for (i = ingred.begin(); i != ingred.end(); i++)
  103. {
  104. string name = i->first;
  105. int kol = i->second;
  106. int pr = prices[name].first;
  107. int number_in_box = prices[name].second;
  108. int box = ceil(kol / number_in_box)
  109. int cur_sum = box * pr;
  110.  
  111. sum+= cur_sum;
  112. ans_1.push_back(box);
  113.  
  114. }
  115. cout<<sum<<endl;
  116. int j = 0;
  117. for (i = ingred.begin(); i != ingred.end(); i++)
  118. {
  119. string name = i->first;
  120. cout<<name<<" "<<ans_1[j]<<endl;
  121. j++;
  122. }
  123.  
  124. for (i = dishes.begin(); i != dishes.end(); i++)
  125. {
  126. string name = i->first;
  127. vector <pair<string, int> > ing = i->second;
  128. cout<<name<<" ";
  129. double belki = 0;
  130. double jir = 0;
  131. double ugl = 0;
  132. double energy = 0;
  133. for (int j = 0; j < ing.size(); j++)
  134. {
  135. string ingred = ing[j].first;
  136. int kol = ing[j].second;
  137. int a = INFO[ingred].first;
  138. info IN = INFO[ingred].second;
  139. belki += kol * IN.belki / a;
  140. jir += kol * IN.jir / a;
  141. ugl += kol * IN.ugl / a;
  142. energy += kol * IN.energy / a;
  143. }
  144. cout<<belki<<" "<<jir<<" "<<ugl<<" "<<energy<<endl;
  145.  
  146.  
  147. }
  148.  
  149. //map <string,vector <pair<string,int> > > dishes;//name, list of ingred {name,number}
  150.  
  151. //map<string,pair< int,info> > INFO; //name, size , info
  152.  
  153. //struct info {
  154. //double belki, jir, ugl, energy;
  155.  
  156.  
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement