Advertisement
pedrocasdev

Untitled

Sep 24th, 2023
683
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  * Author : pedrocas
  3.  * Date   : 2023 Sep 24 11:44:35 AM
  4. */
  5.  
  6. #include <bits/stdc++.h>
  7.  
  8. using namespace std;
  9.  
  10. typedef long long ll;
  11. const long long mod = 1000000007;
  12. ll gcd (ll a, ll b) {return b==0 ? a : gcd(b, a%b);}
  13.  
  14. #define all(c) (c).begin(),(c).end()
  15. #define pb push_back
  16. #define mp make_pair
  17. #define fastio ios_base::sync_with_stdio(false); cin.tie(nullptr);
  18.  
  19. const int di4[] = {-1, 0, 1,  0};
  20. const int dj4[] = { 0, 1, 0, -1};
  21. const int di8[] = {-1, 0, 1,  0, -1, 1,-1,1};
  22. const int dj8[] = { 0, 1, 0, -1, -1, 1,1,-1};
  23.  
  24. const int maxn = 2e5 + 10;
  25. const ll INF = 1e18;
  26.  
  27. int main()
  28. {
  29. #ifdef LOCAL
  30.     freopen("input.txt", "rt", stdin);
  31.     freopen("output.txt", "wt", stdout);
  32. #endif
  33.     fastio
  34.     int tc = 1;
  35.     //cin >> tc;
  36.     while(tc-- ){
  37.         int n, k;cin >> n >> k;
  38.         vector<int> v[n];
  39.         map<int, int> pos[n];
  40.         for(int i = 0; i<n; i++){
  41.             for(int j = 0, x; j<k; j++){
  42.                 cin >> x;
  43.                 v[i].pb(x);
  44.                 pos[i][x] = j;
  45.             }
  46.         }
  47.         vector<int> b = v[0];
  48.         vector<int> c[n];
  49.         vector<int> mx(n + 1, 0);
  50.         int cnt = 0, ans = 1;
  51.         mx[1] = 1;
  52.         for(int i = 0; i<k; i++){
  53.             int el = b[i];
  54.             bool ok = true;
  55.             for(int j = 1; ok&&j<n; j++){
  56.                 if(c[j].size() == 0){
  57.                     c[j].pb(pos[j][el]);   
  58.                 }else{
  59.                     if(c[j].back() + 1 != pos[j][el]){
  60.                         ok = false;
  61.                     }else{
  62.                         c[j].push_back(pos[j][el]);
  63.                     }
  64.                 }  
  65.             }
  66.             if(ok){
  67.                 ans = max(ans, ++cnt);
  68.                 mx[cnt]++;
  69.             }else{
  70.                 cnt = 0;
  71.                 for(int j = 1; j< n; j++){
  72.                     c[j].clear();
  73.                 }
  74.             }
  75.         }
  76.         if(ans == 1){
  77.             cout << 1 << " " << mx[ans] <<endl;
  78.         }else cout << ans << " " <<mx[ans]<<endl;
  79.     }
  80.     return 0;
  81. }
  82.  
  83.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement