Advertisement
7oSkaaa

N - Marks

Nov 6th, 2022
554
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.49 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define fixed(n) fixed << setprecision(n)
  6. #define ceil(n, m) (((n) / (m)) + ((n) % (m) ? 1 : 0))
  7. #define add_mod(a, b, m) (((a % m) + (b % m)) % m)
  8. #define sub_mod(a, b, m) (((a % m) - (b % m) + m) % m)
  9. #define mul_mod(a, b, m) (((a % m) * (b % m)) % m)
  10. #define all(vec) vec.begin(), vec.end()
  11. #define rall(vec) vec.rbegin(), vec.rend()
  12. #define sz(x) int(x.size())
  13. #define debug(x) cout << #x << ": " << (x) << "\n";
  14. #define fi first
  15. #define se second
  16. #define ll long long
  17. #define ull unsigned long long
  18. #define Mod  1'000'000'007
  19. #define EPS 1e-9
  20. constexpr int INF = 1 << 30;
  21. constexpr ll LINF = 1LL << 62;
  22. #define PI acos(-1)
  23. template < typename T = int > using Pair = pair < T, T >;
  24. vector < string > RET = {"NO", "YES"};
  25.  
  26. template < typename T = int > istream& operator >> (istream &in, vector < T > &v) {
  27.     for (auto &x : v) in >> x;
  28.     return in;
  29. }
  30.  
  31. template < typename T = int > ostream& operator << (ostream &out, const vector < T > &v) {
  32.     for (const T &x : v) out << x << ' ';
  33.     return out;
  34. }
  35.  
  36. // the students the get the maximum degree in each subject
  37. // remove the duplicates students
  38.  
  39. vector < int > students_marks(string& s){
  40.     vector < int > ret;
  41.     for(auto& c : s)
  42.         ret.push_back(c - '0');
  43.     return ret;
  44. }
  45.  
  46. void Solve(){
  47.     int n, m;
  48.     cin >> n >> m;
  49.     vector < vector < int > > marks(n, vector < int > (m));
  50.     for(int i = 0; i < n; i++){
  51.         string marks_for_student;
  52.         cin >> marks_for_student;
  53.         marks[i] = students_marks(marks_for_student);
  54.     }
  55.     vector < int > max_degree(m, INT_MIN);
  56.     for(int subject = 0; subject < m; subject++)
  57.         for(int student = 0; student < n; student++)
  58.             max_degree[subject] = max(max_degree[subject], marks[student][subject]);
  59.     vector < bool > is_successful(n, false);
  60.     for(int subject = 0; subject < m; subject++)
  61.         for(int student = 0; student < n; student++)
  62.             if(marks[student][subject] == max_degree[subject])
  63.                 is_successful[student] = true;
  64.     int cnt_successful = 0;
  65.     for(int student = 0; student < n; student++)
  66.         cnt_successful += is_successful[student];
  67.     cout << cnt_successful << '\n';
  68. }
  69.  
  70. int main(){
  71.     ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
  72.     int test_cases = 1;
  73.     // cin >> test_cases;
  74.     for(int tc = 1; tc <= test_cases; tc++){
  75.         // cout << "Case #" << tc << ": ";
  76.         Solve();
  77.     }
  78.     return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement