Pagini recente » Cod sursa (job #967327) | Cod sursa (job #3205060) | Cod sursa (job #2117306) | Cod sursa (job #2624730) | Cod sursa (job #2487960)
#pragma GCC optimize("03")
#include <bits/stdc++.h>
#define fi first
#define se second
#define ll long long
using namespace std;
string s;
map<string, int> mp;
vector<pair<string, vector<string>> > v;
bool cmp(pair<string, vector<string> > a, pair<string, vector<string> > b) {
int sz = min((int) a.se.size(), (int) b.se.size());
int i = 0;
for (; i < sz; ) {
if (mp[a.se[i]] > mp[b.se[i]])
return 1;
if (mp[a.se[i]] < mp[b.se[i]])
return 0;
i++;
}
if ((int) a.se.size() == sz && (int) b.se.size() == sz)
return a.fi < b.fi;
return (int) a.se.size() < (int) b.se.size();
}
int main() {
ifstream cin("tst.in");
// ofstream cout("tst.out");
ios_base::sync_with_stdio(0);
cin.tie(NULL);
mp["inferior"] = 0;
mp["mediu"] = 1;
mp["superior"] = 2;
while (getline(cin, s)) {
int p = 0;
int n = s.size();
string cuv = "";
while (p < n && s[p] != ':') {
cuv += s[p];
p++;
}
p++;
p++;
vector<string> u;
while (p < n) {
string wr = "";
while (p < n && s[p] != '-') {
wr += s[p];
p++;
}
u.push_back(wr);
p++;
}
v.push_back({cuv, u});
}
sort(v.begin(), v.end(), cmp);
for (int i = 0; i < 2; i++)
cout
for (auto it : v)
cout << it.fi << '\n';
return 0;
}