Alex_tz307

School-CCC Track the cars - Level 2

Oct 28th, 2020 (edited)
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.94 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. ifstream fin("text.in");
  6. ofstream fout("text.out");
  7.  
  8. struct observator {
  9.     string id, time, latitiude, longitude;
  10. };
  11.  
  12. bool bigger(string s, string t) {
  13.     string S, T;
  14.     int ps = 0, pt = 0;
  15.     while(ps < (int)s.size() && isdigit(s[ps]))
  16.         S.push_back(s[ps++]);
  17.     while(pt < (int)t.size() && isdigit(t[pt]))
  18.         T.push_back(t[pt++]);
  19.     if(S.size() > T.size())
  20.         return true;
  21.     if(S.size() < T.size())
  22.         return false;
  23.     int dim = S.size();
  24.     int p = 0;
  25.     while(p < dim && S[p] == T[p])
  26.         ++p;
  27.     if(p != dim)
  28.         return S[p] > T[p];
  29.     ++ps, ++pt;
  30.     S.clear(), T.clear();
  31.     while(ps < (int)s.size() && isdigit(s[ps]))
  32.         S.push_back(s[ps++]);
  33.     while(pt < (int)t.size() && isdigit(t[pt]))
  34.         T.push_back(t[pt++]);
  35.     dim = min(S.size(), T.size());
  36.     p = 0;
  37.     while(p < dim && S[p] == T[p])
  38.         ++p;
  39.     if(p != dim)
  40.         return S[p] > T[p];
  41.     return S.size() > T.size();
  42. }
  43.  
  44. int main() {
  45.     int N;
  46.     fin >> N;
  47.     vector < observator > a(N);
  48.     string id1, time1, id2, time2, mx1 = "", mx2 = "";
  49.     for(auto& x : a) {
  50.         string s;
  51.         fin >> s;
  52.         int p = 0;
  53.         while(isalnum(s[p]) || s[p] == '-')
  54.             x.id.push_back(s[p++]);
  55.         ++p;
  56.         while(isdigit(s[p]) || s[p] == ':')
  57.             x.time.push_back(s[p++]);
  58.         ++p;
  59.         while(isdigit(s[p]) || s[p] == '.')
  60.             x.latitiude.push_back(s[p++]);
  61.         ++p;
  62.         while(isdigit(s[p]) || s[p] == '.')
  63.             x.longitude.push_back(s[p++]);
  64.         if(bigger(x.latitiude, mx1)) {
  65.             mx1 = x.latitiude;
  66.             id1 = x.id;
  67.             time1 = x.time;
  68.         }
  69.         if(bigger(x.longitude, mx2)) {
  70.             mx2 = x.longitude;
  71.             id2 = x.id;
  72.             time2 = x.time;
  73.         }
  74.     }
  75.     fout << id1 << ',' << time1 << ',' << id2 << ',' << time2;
  76. }
  77.  
Add Comment
Please, Sign In to add comment