Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Nguồn bài:
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch
Cho danh sách tên người, bạn hãy xác định xem số lần xuất hiện của mỗi người trong danh sách là bao nhiêu? Sau đó liệt kê tên người và số lần xuất hiện theo thứ tự từ điển tăng dần
Đối với ngôn ngữ lập trình C, bạn sử dụng struct này để giải quyết bài toán :
struct name{
char ten[1000];
int fre;
};
Đầu vào
Gồm không quá 1000 dòng, mỗi dòng là tên 1 người
Giới hạn
Tên người chỉ bao gồm chữ cái và dấu cách
Đầu ra
In ra tên người và số lần xuất hiện theo thứ tự từ điển tăng dần
Ví dụ :
Input 01
joe biden
tim cook
leonardo da vinci
28tech
leonardo da vinci
elon musk
leonardo da vinci
28tech
28tech
joe biden
Output 01
28tech 3
elon musk 1
joe biden 2
leonardo da vinci 3
tim cook 1
Bình luận
Full AC
include <iostream>
include <string>
include <unordered_map>
include <vector>
include <algorithm>
using namespace std;
struct PersonFrequency { string name; int count; };
using FrequencyMap = unordered_map<string, int>;
FrequencyMap buildFrequency(istream& input) { FrequencyMap freq; string line; while (getline(input, line)) { if (!line.empty()) { ++freq[line]; } } return freq; }
vector<PersonFrequency> convertToVector(const FrequencyMap& freq) { vector<PersonFrequency> result; result.reserve(freq.size()); for (const auto& kv : freq) { result.push_back({kv.first, kv.second}); } return result; }
void sortByName(vector<PersonFrequency>& entries) { sort(entries.begin(), entries.end(), { return a.name < b.name; }); }
void printFrequencies(const vector<PersonFrequency>& entries, ostream& output) { for (const auto& entry : entries) { output << entry.name << " " << entry.count << '\n'; } }
int main() { ios::syncwithstdio(false); cin.tie(nullptr);
}
chị có blog cá nhân k cho em xin follow với :)) Học hỏi thêm từ chị
Không ấy, mình không có làm blog á