Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <unordered_map>
- using namespace std;
- int main() {
- unordered_map <string, vector<int> > umap;
- unordered_map <string, unordered_map<string,int> > menu;
- unordered_map <string, vector<double> > kal;
- vector <string> dish(0);
- int n;
- cin >> n;
- for (int i = 0; i < n; i++) {
- string d;
- cin >> d;
- dish.push_back(d);
- kal[dish[i]] = vector<double>(4);
- kal[dish[i]][0] = 0;
- kal[dish[i]][1] = 0;
- kal[dish[i]][2] = 0;
- kal[dish[i]][3] = 0;
- int c, z;
- cin >> c >> z;
- for (int j = 0; j < z; j++) {
- string s;
- cin >> s;
- int a;
- cin >> a;
- string u;
- cin >> u;
- if (u == "kg" || u == "l") {
- if (umap.find(s) == umap.end()) {
- umap.insert(make_pair(s, vector<int>(1,c*a*1000)));
- menu[d][s] = a*1000;
- } else {
- umap[s][0] += (c*a*1000);
- menu[d][s] = a*1000;
- }
- } else if (u == "tens") {
- if (umap.find(s) == umap.end()) {
- umap.insert(make_pair(s, vector<int>(1,c*a*10)));
- menu[d][s] = a*10;
- } else {
- umap[s][0] += (c*a*10);
- menu[d][s] = a*10;
- }
- } else {
- if (umap.find(s) == umap.end()) {
- umap.insert(make_pair(s, vector<int>(1,c*a)));
- menu[d][s] = a;
- } else {
- umap[s][0] += (c*a);
- menu[d][s] = a;
- }
- }
- }
- }
- vector<int> ing(0);
- vector<string> name(0);
- int cost = 0;
- int k;
- cin >> k;
- for (int i = 0; i < k; i++) {
- string t;
- cin >> t;
- name.push_back(t);
- int p;
- cin >> p;
- int a;
- cin >> a;
- string u;
- cin >> u;
- if (umap.find(t) == umap.end()) {
- ing.push_back(0);
- } else {
- if (u == "kg" || u == "l") {
- int v = umap[t][0]/(a*1000);
- if (umap[t][0]%(a*1000) > 0) {
- ing.push_back(v + 1);
- cost += (v+1)*p;
- } else {
- ing.push_back(v);
- cost += (v)*p;
- }
- } else if (u == "tens") {
- int v = umap[t][0]/(a*10);
- if (umap[t][0]%(a*10) > 0) {
- ing.push_back(v + 1);
- cost += (v+1)*p;
- } else {
- ing.push_back(v);
- cost += (v)*p;
- }
- } else {
- int v = umap[t][0]/(a);
- if (umap[t][0]%(a) > 0) {
- ing.push_back(v + 1);
- cost += (v+1)*p;
- } else {
- ing.push_back(v);
- cost += (v)*p;
- }
- }
- }
- }
- int m;
- cin >> m;
- for (int i = 0; i < m; i++) {
- string t;
- cin >> t;
- int a;
- cin >> a;
- string u;
- cin >> u;
- double pr, f, ch, fv;
- cin >> pr >> f >> ch >> fv;
- for (int j = 0; j < n; j++) {
- if (menu[dish[j]].find(t) == menu[dish[j]].end()) {
- continue;
- } else {
- if (u == "kg" || u == "l") {
- kal[dish[j]][0] += (menu[dish[j]][t]*pr/(a*1000));
- kal[dish[j]][1] += (menu[dish[j]][t]*f/(a*1000));
- kal[dish[j]][2] += (menu[dish[j]][t]*ch/(a*1000));
- kal[dish[j]][3] += (menu[dish[j]][t]*fv/(a*1000));
- } else if (u == "tens") {
- kal[dish[j]][0] += (menu[dish[j]][t]*pr/(a*10));
- kal[dish[j]][1] += (menu[dish[j]][t]*f/(a*10));
- kal[dish[j]][2] += (menu[dish[j]][t]*ch/(a*10));
- kal[dish[j]][3] += (menu[dish[j]][t]*fv/(a*10));
- } else {
- kal[dish[j]][0] += (menu[dish[j]][t]*pr/(a));
- kal[dish[j]][1] += (menu[dish[j]][t]*f/(a));
- kal[dish[j]][2] += (menu[dish[j]][t]*ch/(a));
- kal[dish[j]][3] += (menu[dish[j]][t]*fv/(a));
- }
- }
- }
- }
- cout << cost << '\n';
- for (int i = 0; i < k; i++) {
- cout << name[i] << ' ' << ing[i] << '\n';
- }
- for (int i = 0; i < n; i++) {
- cout << dish[i] << ' ' << kal[dish[i]][0] << ' ' << kal[dish[i]][1] << ' '
- << kal[dish[i]][2] << ' ' << kal[dish[i]][3] << '\n';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement