diff --git a/contests/5contest/3.cpp b/contests/5contest/3.cpp index e69de29..93fad66 100644 --- a/contests/5contest/3.cpp +++ b/contests/5contest/3.cpp @@ -0,0 +1,114 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +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 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 studs; + std::set dates; + + std::string name, date; + int grade; + while (std::cin >> name >> date >> grade) { + std::set::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; +} + diff --git a/kr/1 b/kr/1 new file mode 100755 index 0000000..4ecf0b5 Binary files /dev/null and b/kr/1 differ diff --git a/kr/1.cpp b/kr/1.cpp index 3996cd2..6114ef9 100644 --- a/kr/1.cpp +++ b/kr/1.cpp @@ -1,8 +1,8 @@ -// #include +#include #include template -size_t incremental_seq(const T& cnt) { +std::size_t incremental_seq(const T& cnt) { int max_len = 0; auto iter = cnt.begin(); @@ -26,9 +26,10 @@ size_t incremental_seq(const T& cnt) { } -// int main() { -// std::vector v{ 4,1,2,3,4,3,4,5 }; -// std::cout << incremental_seq(v) << std::endl; +int main() { + std::vector v{ 4,1,2,3,4,3,4,5 }; + std::cout << incremental_seq(v) << std::endl; + + return 0; +} -// return 0; -// } \ No newline at end of file