Pagini recente » Borderou de evaluare (job #3329675) | Borderou de evaluare (job #3347294) | Borderou de evaluare (job #2828362) | Cod sursa (job #1995160) | Cod sursa (job #3318213)
#include <bits/stdc++.h>
using namespace std;
#if 0
#define fin cin
#define fout cout
#else
ifstream fin("zimeria.in");
ofstream fout("zimeria.out");
#endif
long long cer, n, i, j, ord[400002], v[400002];
char str[400002][6], car;
long long lexi[27], rasp;
static inline bool Cmp(long long a, long long b) {
return v[a] < v[b];
}
int main() {
//ios_base::sync_with_stdio(false);
fin.tie(nullptr);
fout.tie(nullptr);
fin >> cer >> n;
for(i = 0; i < 12; i++) {
fin >> car;
lexi[car - 'a'] = i;
}
for(i = 1; i <= n; i++) {
fin >> str[i];
ord[i] = i;
for(j = 0; j < 5; j++) {
v[i] = v[i] * 12 + lexi[str[i][j] - 'a'];
}
}
sort(ord + 1, ord + n + 1, Cmp);
if(cer == 1) {
for(i = 1; i <= n; i++) rasp += (v[ord[i - 1]] != v[ord[i]]);
fout << rasp;
}
else {
for(i = 1; i <= n; i++) fout << str[ord[i]] << "\n";
}
return 0;
}