new tasks

This commit is contained in:
2025-05-04 00:45:14 +03:00
parent f7c107b877
commit 0cb745c9a1
3 changed files with 122 additions and 7 deletions
+114
View File
@@ -0,0 +1,114 @@
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <map>
#include <algorithm>
#include <iomanip>
#include <set>
struct Date {
int Y;
int M;
int D;
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 {
if (Y < d.Y) return true;
if (Y > d.Y) return false;
if (M < d.M) return true;
if (M > d.M) return false;
if (D < d.D) return true;
return false;
}
};
struct Student {
std::map<Date, int> scores;
std::string name;
Student(std::string name) : name(name) {}
Student(const Student& s) {
scores = s.scores;
name = s.name;
}
bool operator==(const std::string n) {
return n == name;
}
bool operator<(const Student st) const {
return name < st.name;
}
};
int main() {
std::set<Student> studs;
std::set<Date> dates;
std::string name, date;
int grade;
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;
studs.insert(s);
} else {
Student s(*iter);
s.scores[d] = grade;
studs.erase(iter);
studs.insert(s);
}
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::cout << std::endl;
for (auto st : studs) {
std::cout << st.name << '\t';
for (auto date : dates) {
if (st.scores.find(date) == st.scores.end()) {
std::cout << '.' << '\t';
} else {
std::cout << st.scores[date] << '\t';
}
}
std::cout << std::endl;
}
return 0;
}
Executable
BIN
View File
Binary file not shown.
+8 -7
View File
@@ -1,8 +1,8 @@
// #include <iostream> #include <iostream>
#include <vector> #include <vector>
template <typename T> template <typename T>
size_t incremental_seq(const T& cnt) { std::size_t incremental_seq(const T& cnt) {
int max_len = 0; int max_len = 0;
auto iter = cnt.begin(); auto iter = cnt.begin();
@@ -26,9 +26,10 @@ size_t incremental_seq(const T& cnt) {
} }
// int main() { int main() {
// std::vector v{ 4,1,2,3,4,3,4,5 }; std::vector<int> v{ 4,1,2,3,4,3,4,5 };
// std::cout << incremental_seq(v) << std::endl; std::cout << incremental_seq(v) << std::endl;
return 0;
}
// return 0;
// }