Submission #777657

# Submission time Handle Problem Language Result Execution time Memory
777657 2023-07-09T12:27:49 Z Sam_a17 New Home (APIO18_new_home) C++17
57 / 100
5000 ms 483944 KB
#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
//#include "temp.cpp"
#include <cstdio>
using namespace std;
 
#ifndef ONLINE_JUDGE
#define dbg(x) cerr << #x <<" "; print(x); cerr << endl;
#else
#define dbg(x)
#endif
 
#define sz(x) (int)x.size()
#define len(x) (int)x.length()
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define clr(x) (x).clear()
#define uniq(x) x.resize(unique(all(x)) - x.begin());
#define blt __builtin_popcount
 
#define pb push_back
#define popf pop_front
#define popb pop_back
#define ld long double
#define ll long long
 
void print(long long t) {cerr << t;}
void print(int t) {cerr << t;}
void print(string t) {cerr << t;}
void print(char t) {cerr << t;}
void print(double t) {cerr << t;}
void print(long double t) {cerr << t;}
void print(unsigned long long t) {cerr << t;}
 
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
#define nl '\n'
 
// Indexed Set  
template <class T> using Tree = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
 
template <class T, class V> void print(pair <T, V> p);
template <class T> void print(vector <T> v);
template <class T> void print(set <T> v);
template <class T, class V> void print(map <T, V> v);
template <class T> void print(multiset <T> v);
template <class T, class V> void print(T v[],V n) {cerr << "["; for(int i = 0; i < n; i++) {print(v[i]); cerr << " "; } cerr << "]";}
template <class T, class V> void print(pair <T, V> p) {cerr << "{"; print(p.first); cerr << ","; print(p.second); cerr << "}";}
template <class T> void print(vector <T> v) {cerr << "[ "; for (T i : v) {print(i); cerr << " ";} cerr << "]";}
// template <class T> void print(vector <T> v) {cerr << "[ "; for (T i : v) {print(i); cerr << " ";} cerr << "]";}
template <class T> void print(set <T> v) {cerr << "[ "; for (T i : v) {print(i); cerr << " ";} cerr << "]";}
template <class T> void print(multiset <T> v) {cerr << "[ "; for (T i : v) {print(i); cerr << " ";} cerr << "]";}
template <class T> void print(Tree <T> v) {cerr << "[ "; for (T i : v) {print(i); cerr << " ";} cerr << "]";}
template <class T, class V> void print(map <T, V> v) {cerr << "[ "; for (auto i : v) {print(i); cerr << " ";} cerr << "]";}
template <class T> void print(deque <T> v) {cerr << "[ "; for (T i : v) {print(i); cerr << " ";} cerr << "]";}
 
 
// for random generations
mt19937 myrand(chrono::steady_clock::now().time_since_epoch().count());
// mt19937 myrand(131);
 
// for grid problems
int dx[8] = {-1,0,1,0,1,-1,1,-1};
int dy[8] = {0,1,0,-1,1,1,-1,-1};
 
// lowest / (1 << 17) >= 1e5 / (1 << 18) >= 2e5 / (1 << 21) >= 1e6
void fastIO() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr); cout.tie(nullptr);
}
// file in/out
void setIO(string str = "") {
  fastIO();
 
  // if(str == "input") {
    // freopen("input.txt", "r", stdin);
    // freopen("output.txt", "w", stdout);
  // } else if(str != "") {
    // freopen((str + ".in").c_str(), "r", stdin);
    // freopen((str + ".out").c_str(), "w", stdout);
  // }
}
 
const int N = 2e6 + 10 + 5e5 + 10, maxM = 3e5 + 10, inf = 1e8, infi = 2e9 + 10;
vector<pair<pair<int, int>, int>> to_add[N];
int n, k, q;
 
struct node {
  int x, t, a, b;
};
 
vector<node> cand;

struct segTreeMax {  // Range Queries
  multiset<int> mt[N];
  vector<int> mTree;
  int size, sub;

  void init(ll n) {
    size = 1;
    while(size < n)  {
      size *= 2;
    }
    mTree.assign(2 * size - 1, 0);
  }

  void upd(int u, ll v, int x, int lx, int rx) { // set value at pos u
    if(rx - lx == 1) {
      x -= sub;
      if(v >= 0) {
        mt[x].insert(v);
      } else {
        assert(mt[x].find(-v) != mt[x].end());
        mt[x].erase(mt[x].find(-v));
      }

      if(!mt[x].empty()) {
        mTree[x + sub] = *prev(mt[x].end());
      } else {
        mTree[x + sub] = -1;
      }
      return;
    }

    int m = (lx + rx) / 2;
    if(u < m) {
      upd(u, v, 2 * x + 1, lx, m);
    }else {
      upd(u, v, 2 * x + 2, m, rx);
    }
    mTree[x] = max(mTree[2 * x + 1], mTree[2 * x + 2]);
  }

  void upd(int u, ll v) {
    upd(u, v, 0, 0, size);
  }

  int gt(int u, int x, int lx, int rx) { // set value at pos u
    if(rx - lx == 1) {
      sub = x;
      return x;
    }

    int m = (lx + rx) / 2;
    if(u < m) {
      return gt(u, 2 * x + 1, lx, m);
    }else {
      return gt(u, 2 * x + 2, m, rx);
    }
  }

  int gt(int u) {
    return gt(u, 0, 0, size);
  }

  int qry(int l, int r, int x, int lx, int rx) { // range queries
    if(l >= rx || lx >= r) {
      return -1;
    }

    if(lx >= l && r >= rx) {
      return mTree[x];
    }

    int m = (rx + lx) / 2;
    int s1 = qry(l, r, 2 * x + 1, lx, m);
    int s2 = qry(l, r, 2 * x + 2, m, rx);
    return max(s1, s2);
  }

  int qry(int l, int r) {
    return qry(l, r, 0,0,size);
  }
};

struct segTreeMin {  // Range Queries
  multiset<int> mt[N];
  vector<int> mTree;
  int size;
  int sub;

  void init(ll n) {
    size = 1;
    while(size < n)  {
      size *= 2;
    }
    mTree.assign(2 * size - 1, INT32_MAX);
  }

  int ind(int xx) {
    if(xx >= sub) {
      return xx - sub;
    } else {
      return xx;
    }
  }

  void upd(int u, ll v, int x, int lx, int rx) { // set value at pos u
    if(rx - lx == 1) {
      x -= sub;
      if(v >= 0) {
        mt[x].insert(v);
      } else {
        assert(mt[x].find(-v) != mt[x].end());
        mt[x].erase(mt[x].find(-v));
      }

      if(!mt[x].empty()) {
        mTree[x + sub] = *mt[x].begin();
      } else {
        mTree[x + sub] = INT32_MAX;
      }
      return;
    }

    int m = (lx + rx) / 2;
    if(u < m) {
      upd(u, v, 2 * x + 1, lx, m);
    }else {
      upd(u, v, 2 * x + 2, m, rx);
    }
    mTree[x] = min(mTree[2 * x + 1], mTree[2 * x + 2]);
  }

  void upd(int u, ll v) {
    upd(u, v, 0, 0, size);
  }

  int gt(int u, int x, int lx, int rx) { // set value at pos u
    if(rx - lx == 1) {
      sub = x;
      return x;
    }

    int m = (lx + rx) / 2;
    if(u < m) {
      return gt(u, 2 * x + 1, lx, m);
    }else {
      return gt(u, 2 * x + 2, m, rx);
    }
  }

  int gt(int u) {
    return gt(u, 0, 0, size);
  }

  int qry(int l, int r, int x, int lx, int rx) { // range queries
    if(l >= rx || lx >= r) {
      return INT32_MAX;
    }

    if(lx >= l && r >= rx) {
      return mTree[x];
    }

    int m = (rx + lx) / 2;
    int s1 = qry(l, r, 2 * x + 1, lx, m);
    int s2 = qry(l, r, 2 * x + 2, m, rx);
    return min(s1, s2);
  }

  int qry(int l, int r) {
    return qry(l, r, 0,0,size);
  }
};

segTreeMax rs;
segTreeMin ls;

vector<int> compress_times, compress_locations;
map<int, int> mx_col[maxM];
int pat[maxM];

int get(int val) {
  return lower_bound(all(compress_locations), val) - compress_locations.begin();
}

void add_interval(int type, int l, int r) {
  int mid = (l + r + 1) / 2;
  l = get(l);
  r = get(r);
  int midone = get(mid - 1);
  mid = midone + 1;
  
  if(mid <= r) {
    rs.upd(mid, r);
  }
  if(l < mid) {
    ls.upd(midone, l);
  }
}

void del_interval(int type, int l, int r) {
  int mid = (l + r + 1) / 2;
  
  l = get(l);
  r = get(r);
  int midone = get(mid - 1);
  mid = midone + 1;

  if(mid <= r) rs.upd(mid, -r);
  if(l < mid) ls.upd(midone, -l);
}

void solve_() {
  cin >> n >> k >> q;
 
  for(int i = 1; i <= n; i++) {
    int x, t, a, b; 
    cin >> x >> t >> a >> b;
    
    compress_times.push_back(a);
    compress_times.push_back(b + 1);

    compress_locations.push_back(x);

    cand.push_back({x, t, a, b});
  }

  vector<pair<int, int>> queries;
  for(int i = 1; i <= q; i++) {
    int l, y; cin >> l >> y;
    compress_locations.push_back(l);
    compress_times.push_back(y);
    queries.emplace_back(l, y);
  }

  compress_locations.push_back(-infi);
  compress_locations.push_back(infi);
  
  sort(all(compress_times));
  uniq(compress_times);


  for(auto &i: cand) {
    i.a = lower_bound(all(compress_times), i.a) - compress_times.begin();
    i.b = lower_bound(all(compress_times), i.b + 1) - compress_times.begin();

    to_add[i.a].push_back({{i.x, i.t}, 1});
    to_add[i.b].push_back({{i.x, i.t}, 2});
  } 

  for(int i = 1; i <= k; i++) {
    mx_col[i][-infi] = 1;
    mx_col[i][infi] = 1;
  }

  for(int i = 0; i < sz(compress_times); i++) {
    for(auto cc: to_add[i]) {
      if(cc.second == 1) { 
        auto j = cc.first;
        if(mx_col[j.second].find(j.first) != mx_col[j.second].end()) {
          mx_col[j.second][j.first]++;
          continue;
        }

        mx_col[j.second][j.first] = 1;
        auto it = mx_col[j.second].find(j.first);
        auto it_prev = prev(it), it_next = next(it);

        int mid1 = (it_next->first + j.first + 1) / 2;
        int mid2 = (it_prev->first + j.first + 1) / 2;

        compress_locations.push_back(mid1);
        compress_locations.push_back(mid1 - 1);

        compress_locations.push_back(mid2);
        compress_locations.push_back(mid2 - 1);
      } else if(cc.second == 2) {
        auto j = cc.first;
        mx_col[j.second][j.first]--;
        if(mx_col[j.second][j.first] == 0) {

          auto it = mx_col[j.second].find(j.first);
          auto it_prev = prev(it), it_next = next(it);

          int mid1 = (it_next->first + it_prev->first + 1) / 2;
          
          compress_locations.push_back(mid1);
          compress_locations.push_back(mid1 - 1);
  
          mx_col[j.second].erase(j.first);
        }
      } 
    }
  }

  int it = 1;
  for(auto &i: queries) {
    i.second = lower_bound(all(compress_times), i.second) - compress_times.begin();
    to_add[i.second].push_back({{i.first, it}, 0});
    it++;
  }

  sort(all(compress_locations));
  uniq(compress_locations);
  ls.init(sz(compress_locations) + 2);
  rs.init(sz(compress_locations) + 2);
  rs.gt(0);
  ls.gt(0);

  for(int i = 1; i <= k; i++) {
    mx_col[i].clear();
    
    mx_col[i][-infi] = 1;
    mx_col[i][infi] = 1;
  }

  vector<bool> empty(k + 1, true);
  int emp = k;
  for(int i = 0; i < sz(compress_times); i++) {
    for(auto cc: to_add[i]) {
      if(cc.second == 1) { 
        auto j = cc.first;
        if(mx_col[j.second].find(j.first) != mx_col[j.second].end()) {
          mx_col[j.second][j.first]++;
          continue;
        }

        mx_col[j.second][j.first] = 1;
        if(sz(mx_col[j.second]) == 3) {
          empty[j.second] = false;
          emp--;
        }

        auto it = mx_col[j.second].find(j.first);
        auto it_prev = prev(it), it_next = next(it);

        int mid1 = (it_next->first + j.first + 1) / 2;
        int mid2 = (it_prev->first + j.first + 1) / 2;

        add_interval(j.second, it_prev->first, j.first);
        add_interval(j.second, j.first, it_next->first);

        if(it_prev->first != -infi || it_next->first != infi) {
          del_interval(j.second, it_prev->first, it_next->first);
        }
      } else if(cc.second == 2) {
        auto j = cc.first;
        mx_col[j.second][j.first]--;
        if(mx_col[j.second][j.first] == 0) {

          auto it = mx_col[j.second].find(j.first);
          if(sz(mx_col[j.second]) == 3) {
            empty[j.second] = true;
            emp++;
          }

          auto it_prev = prev(it), it_next = next(it);
          del_interval(j.second, it_prev->first, j.first);
          del_interval(j.second, j.first, it_next->first);

          if(it_prev->first != -infi || it_next->first != infi) {
            add_interval(j.second, it_prev->first, it_next->first);
          }

          mx_col[j.second].erase(j.first);
        }
      } else {
        auto j = cc.first;
        if(emp) {
          pat[j.second] = -1;
        } else {
          int cur = lower_bound(all(compress_locations), j.first) - compress_locations.begin();
          int li = ls.qry(cur, sz(compress_locations) + 1);
          int ri = rs.qry(0, cur + 1);

          if(li <= cur) {
            pat[j.second] = max(pat[j.second], j.first - compress_locations[li]);
          }

          if(ri >= cur) {
            pat[j.second] = max(pat[j.second], compress_locations[ri] - j.first);
          }
        }
      }
    }
  }

  for(int i = 1; i <= q; i++) {
    cout << pat[i] << '\n';
  }
 }
 
int main() {
  setIO();
 
  auto solve = [&](int test_case)-> void {
    for(int i = 1; i <= test_case; i++) {
      solve_();
    }
  };
 
  int test_cases = 1;
  // cin >> test_cases;
  solve(test_cases);
 
  return 0;
}

Compilation message

new_home.cpp: In function 'void solve_()':
new_home.cpp:429:13: warning: unused variable 'mid1' [-Wunused-variable]
  429 |         int mid1 = (it_next->first + j.first + 1) / 2;
      |             ^~~~
new_home.cpp:430:13: warning: unused variable 'mid2' [-Wunused-variable]
  430 |         int mid2 = (it_prev->first + j.first + 1) / 2;
      |             ^~~~
# Verdict Execution time Memory Grader output
1 Correct 151 ms 307956 KB Output is correct
2 Correct 148 ms 307924 KB Output is correct
3 Correct 148 ms 307936 KB Output is correct
4 Correct 147 ms 307916 KB Output is correct
5 Correct 151 ms 307960 KB Output is correct
6 Correct 153 ms 308060 KB Output is correct
7 Correct 150 ms 308164 KB Output is correct
8 Correct 158 ms 308172 KB Output is correct
9 Correct 160 ms 308220 KB Output is correct
10 Correct 167 ms 308156 KB Output is correct
11 Correct 154 ms 308076 KB Output is correct
12 Correct 153 ms 308084 KB Output is correct
13 Correct 150 ms 308156 KB Output is correct
14 Correct 150 ms 308076 KB Output is correct
15 Correct 152 ms 308156 KB Output is correct
16 Correct 150 ms 308172 KB Output is correct
17 Correct 150 ms 308140 KB Output is correct
18 Correct 150 ms 308172 KB Output is correct
19 Correct 152 ms 308200 KB Output is correct
20 Correct 152 ms 308160 KB Output is correct
21 Correct 149 ms 308108 KB Output is correct
22 Correct 151 ms 308240 KB Output is correct
23 Correct 155 ms 308088 KB Output is correct
24 Correct 151 ms 308156 KB Output is correct
25 Correct 150 ms 308060 KB Output is correct
26 Correct 152 ms 308136 KB Output is correct
27 Correct 150 ms 308052 KB Output is correct
28 Correct 151 ms 308100 KB Output is correct
29 Correct 156 ms 308128 KB Output is correct
30 Correct 151 ms 308040 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 151 ms 307956 KB Output is correct
2 Correct 148 ms 307924 KB Output is correct
3 Correct 148 ms 307936 KB Output is correct
4 Correct 147 ms 307916 KB Output is correct
5 Correct 151 ms 307960 KB Output is correct
6 Correct 153 ms 308060 KB Output is correct
7 Correct 150 ms 308164 KB Output is correct
8 Correct 158 ms 308172 KB Output is correct
9 Correct 160 ms 308220 KB Output is correct
10 Correct 167 ms 308156 KB Output is correct
11 Correct 154 ms 308076 KB Output is correct
12 Correct 153 ms 308084 KB Output is correct
13 Correct 150 ms 308156 KB Output is correct
14 Correct 150 ms 308076 KB Output is correct
15 Correct 152 ms 308156 KB Output is correct
16 Correct 150 ms 308172 KB Output is correct
17 Correct 150 ms 308140 KB Output is correct
18 Correct 150 ms 308172 KB Output is correct
19 Correct 152 ms 308200 KB Output is correct
20 Correct 152 ms 308160 KB Output is correct
21 Correct 149 ms 308108 KB Output is correct
22 Correct 151 ms 308240 KB Output is correct
23 Correct 155 ms 308088 KB Output is correct
24 Correct 151 ms 308156 KB Output is correct
25 Correct 150 ms 308060 KB Output is correct
26 Correct 152 ms 308136 KB Output is correct
27 Correct 150 ms 308052 KB Output is correct
28 Correct 151 ms 308100 KB Output is correct
29 Correct 156 ms 308128 KB Output is correct
30 Correct 151 ms 308040 KB Output is correct
31 Correct 890 ms 336612 KB Output is correct
32 Correct 210 ms 314460 KB Output is correct
33 Correct 776 ms 330868 KB Output is correct
34 Correct 796 ms 331048 KB Output is correct
35 Correct 865 ms 336152 KB Output is correct
36 Correct 837 ms 336072 KB Output is correct
37 Correct 633 ms 328544 KB Output is correct
38 Correct 637 ms 328096 KB Output is correct
39 Correct 549 ms 328012 KB Output is correct
40 Correct 562 ms 327688 KB Output is correct
41 Correct 688 ms 332392 KB Output is correct
42 Correct 662 ms 332276 KB Output is correct
43 Correct 182 ms 315708 KB Output is correct
44 Correct 685 ms 332452 KB Output is correct
45 Correct 659 ms 332512 KB Output is correct
46 Correct 638 ms 332412 KB Output is correct
47 Correct 441 ms 331960 KB Output is correct
48 Correct 449 ms 331668 KB Output is correct
49 Correct 501 ms 331972 KB Output is correct
50 Correct 512 ms 332316 KB Output is correct
51 Correct 523 ms 331832 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4445 ms 476036 KB Output is correct
2 Correct 4941 ms 457152 KB Output is correct
3 Correct 3045 ms 481412 KB Output is correct
4 Correct 4306 ms 483516 KB Output is correct
5 Correct 4376 ms 456240 KB Output is correct
6 Correct 4566 ms 456508 KB Output is correct
7 Correct 2736 ms 481084 KB Output is correct
8 Correct 3182 ms 483944 KB Output is correct
9 Correct 3296 ms 468508 KB Output is correct
10 Correct 3688 ms 457312 KB Output is correct
11 Correct 2350 ms 455424 KB Output is correct
12 Correct 2459 ms 456804 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 5054 ms 466684 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 151 ms 307956 KB Output is correct
2 Correct 148 ms 307924 KB Output is correct
3 Correct 148 ms 307936 KB Output is correct
4 Correct 147 ms 307916 KB Output is correct
5 Correct 151 ms 307960 KB Output is correct
6 Correct 153 ms 308060 KB Output is correct
7 Correct 150 ms 308164 KB Output is correct
8 Correct 158 ms 308172 KB Output is correct
9 Correct 160 ms 308220 KB Output is correct
10 Correct 167 ms 308156 KB Output is correct
11 Correct 154 ms 308076 KB Output is correct
12 Correct 153 ms 308084 KB Output is correct
13 Correct 150 ms 308156 KB Output is correct
14 Correct 150 ms 308076 KB Output is correct
15 Correct 152 ms 308156 KB Output is correct
16 Correct 150 ms 308172 KB Output is correct
17 Correct 150 ms 308140 KB Output is correct
18 Correct 150 ms 308172 KB Output is correct
19 Correct 152 ms 308200 KB Output is correct
20 Correct 152 ms 308160 KB Output is correct
21 Correct 149 ms 308108 KB Output is correct
22 Correct 151 ms 308240 KB Output is correct
23 Correct 155 ms 308088 KB Output is correct
24 Correct 151 ms 308156 KB Output is correct
25 Correct 150 ms 308060 KB Output is correct
26 Correct 152 ms 308136 KB Output is correct
27 Correct 150 ms 308052 KB Output is correct
28 Correct 151 ms 308100 KB Output is correct
29 Correct 156 ms 308128 KB Output is correct
30 Correct 151 ms 308040 KB Output is correct
31 Correct 890 ms 336612 KB Output is correct
32 Correct 210 ms 314460 KB Output is correct
33 Correct 776 ms 330868 KB Output is correct
34 Correct 796 ms 331048 KB Output is correct
35 Correct 865 ms 336152 KB Output is correct
36 Correct 837 ms 336072 KB Output is correct
37 Correct 633 ms 328544 KB Output is correct
38 Correct 637 ms 328096 KB Output is correct
39 Correct 549 ms 328012 KB Output is correct
40 Correct 562 ms 327688 KB Output is correct
41 Correct 688 ms 332392 KB Output is correct
42 Correct 662 ms 332276 KB Output is correct
43 Correct 182 ms 315708 KB Output is correct
44 Correct 685 ms 332452 KB Output is correct
45 Correct 659 ms 332512 KB Output is correct
46 Correct 638 ms 332412 KB Output is correct
47 Correct 441 ms 331960 KB Output is correct
48 Correct 449 ms 331668 KB Output is correct
49 Correct 501 ms 331972 KB Output is correct
50 Correct 512 ms 332316 KB Output is correct
51 Correct 523 ms 331832 KB Output is correct
52 Correct 620 ms 345956 KB Output is correct
53 Correct 605 ms 339044 KB Output is correct
54 Correct 736 ms 339748 KB Output is correct
55 Correct 662 ms 336288 KB Output is correct
56 Correct 651 ms 338692 KB Output is correct
57 Correct 668 ms 332812 KB Output is correct
58 Correct 671 ms 335644 KB Output is correct
59 Correct 647 ms 338260 KB Output is correct
60 Correct 665 ms 332012 KB Output is correct
61 Correct 281 ms 334564 KB Output is correct
62 Correct 644 ms 346120 KB Output is correct
63 Correct 731 ms 340296 KB Output is correct
64 Correct 756 ms 337728 KB Output is correct
65 Correct 770 ms 333288 KB Output is correct
66 Correct 701 ms 331520 KB Output is correct
67 Correct 385 ms 321324 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 151 ms 307956 KB Output is correct
2 Correct 148 ms 307924 KB Output is correct
3 Correct 148 ms 307936 KB Output is correct
4 Correct 147 ms 307916 KB Output is correct
5 Correct 151 ms 307960 KB Output is correct
6 Correct 153 ms 308060 KB Output is correct
7 Correct 150 ms 308164 KB Output is correct
8 Correct 158 ms 308172 KB Output is correct
9 Correct 160 ms 308220 KB Output is correct
10 Correct 167 ms 308156 KB Output is correct
11 Correct 154 ms 308076 KB Output is correct
12 Correct 153 ms 308084 KB Output is correct
13 Correct 150 ms 308156 KB Output is correct
14 Correct 150 ms 308076 KB Output is correct
15 Correct 152 ms 308156 KB Output is correct
16 Correct 150 ms 308172 KB Output is correct
17 Correct 150 ms 308140 KB Output is correct
18 Correct 150 ms 308172 KB Output is correct
19 Correct 152 ms 308200 KB Output is correct
20 Correct 152 ms 308160 KB Output is correct
21 Correct 149 ms 308108 KB Output is correct
22 Correct 151 ms 308240 KB Output is correct
23 Correct 155 ms 308088 KB Output is correct
24 Correct 151 ms 308156 KB Output is correct
25 Correct 150 ms 308060 KB Output is correct
26 Correct 152 ms 308136 KB Output is correct
27 Correct 150 ms 308052 KB Output is correct
28 Correct 151 ms 308100 KB Output is correct
29 Correct 156 ms 308128 KB Output is correct
30 Correct 151 ms 308040 KB Output is correct
31 Correct 890 ms 336612 KB Output is correct
32 Correct 210 ms 314460 KB Output is correct
33 Correct 776 ms 330868 KB Output is correct
34 Correct 796 ms 331048 KB Output is correct
35 Correct 865 ms 336152 KB Output is correct
36 Correct 837 ms 336072 KB Output is correct
37 Correct 633 ms 328544 KB Output is correct
38 Correct 637 ms 328096 KB Output is correct
39 Correct 549 ms 328012 KB Output is correct
40 Correct 562 ms 327688 KB Output is correct
41 Correct 688 ms 332392 KB Output is correct
42 Correct 662 ms 332276 KB Output is correct
43 Correct 182 ms 315708 KB Output is correct
44 Correct 685 ms 332452 KB Output is correct
45 Correct 659 ms 332512 KB Output is correct
46 Correct 638 ms 332412 KB Output is correct
47 Correct 441 ms 331960 KB Output is correct
48 Correct 449 ms 331668 KB Output is correct
49 Correct 501 ms 331972 KB Output is correct
50 Correct 512 ms 332316 KB Output is correct
51 Correct 523 ms 331832 KB Output is correct
52 Correct 4445 ms 476036 KB Output is correct
53 Correct 4941 ms 457152 KB Output is correct
54 Correct 3045 ms 481412 KB Output is correct
55 Correct 4306 ms 483516 KB Output is correct
56 Correct 4376 ms 456240 KB Output is correct
57 Correct 4566 ms 456508 KB Output is correct
58 Correct 2736 ms 481084 KB Output is correct
59 Correct 3182 ms 483944 KB Output is correct
60 Correct 3296 ms 468508 KB Output is correct
61 Correct 3688 ms 457312 KB Output is correct
62 Correct 2350 ms 455424 KB Output is correct
63 Correct 2459 ms 456804 KB Output is correct
64 Execution timed out 5054 ms 466684 KB Time limit exceeded
65 Halted 0 ms 0 KB -