some more solves

This commit is contained in:
2025-05-10 16:10:00 +03:00
parent 0cb745c9a1
commit 1924ca48db
11 changed files with 219 additions and 54 deletions
+12 -18
View File
@@ -12,17 +12,17 @@ struct Date {
int M;
int D;
Date(std::string s) {
Date(std::string& s) {
std::stringstream ss;
ss << s;
char tmp;
ss >> Y >> tmp >> M >> tmp >> D;
}
Date(int Y, int M, int D) : Y(Y), M(M), D(D) {}
bool operator<(const Date d) const {
bool operator<(const Date& d) const {
if (Y < d.Y) return true;
if (Y > d.Y) return false;
@@ -30,7 +30,7 @@ struct Date {
if (M > d.M) return false;
if (D < d.D) return true;
return false;
}
@@ -40,18 +40,18 @@ struct Student {
std::map<Date, int> scores;
std::string name;
Student(std::string name) : name(name) {}
Student(std::string& name) : name(name) {}
Student(const Student& s) {
scores = s.scores;
name = s.name;
}
bool operator==(const std::string n) {
bool operator==(const std::string& n) {
return n == name;
}
bool operator<(const Student st) const {
bool operator<(const Student& st) const {
return name < st.name;
}
};
@@ -65,7 +65,7 @@ int main() {
while (std::cin >> name >> date >> grade) {
std::set<Student>::iterator iter = studs.find(name);
Date d(date);
if (iter == studs.end()) {
Student s(name);
s.scores[d] = grade;
@@ -80,25 +80,19 @@ int main() {
dates.insert(d);
}
// std::cout << studs.size() << std::endl;
// std::cout << studs[0].name << studs[0].scores.size() << std::endl;
// std::sort(dates.begin(), dates.end());
// std::sort(studs.begin(), studs.end());
std::cout << '.' << "\t";
for (auto& date : dates) {
std::cout << std::setfill('0')
<< std::setw(4) << date.Y << '/'
<< std::setw(2) << date.M << '/'
<< std::setw(2) << date.D << '\t';
<< std::setw(4) << date.Y << '/'
<< std::setw(2) << date.M << '/'
<< std::setw(2) << date.D << '\t';
}
std::cout << std::endl;
for (auto st : studs) {
std::cout << st.name << '\t';
for (auto date : dates) {
for (auto& date : dates) {
if (st.scores.find(date) == st.scores.end()) {
std::cout << '.' << '\t';
} else {