Submission #864938

# Submission time Handle Problem Language Result Execution time Memory
864938 2023-10-23T18:46:54 Z danikoynov New Home (APIO18_new_home) C++14
57 / 100
5000 ms 994516 KB
#include<bits/stdc++.h>
#define endl '\n'
    
using namespace std;
typedef long long ll;
    
const int maxn = 6e5 + 10, inf = 1e9;
    
struct store
{
    int x, t, a, b;
}s[maxn];
    
struct query
{
    int l, y, idx;
}task[maxn];
    
int n, k, q;
int readInt () {
	bool minus = false;
	int result = 0;
	char ch;
	ch = getchar();
	while (true) {
		if (ch == '-') break;
		if (ch >= '0' && ch <= '9') break;
		ch = getchar();
	}
	if (ch == '-') minus = true; else result = ch-'0';
	while (true) {
		ch = getchar();
		if (ch < '0' || ch > '9') break;
		result = result*10 + (ch - '0');
	}
	if (minus)
		return -result;
	else
		return result;
}
void input()
{
    n = readInt();
    k = readInt();
    q = readInt();
    ///cin >> n >> k >> q;
    for (int i = 1; i <= n; i ++)
    {
        s[i].x = readInt();
        s[i].t = readInt();
        s[i].a = readInt();
        s[i].b = readInt();
        ///        cin >> s[i].x >> s[i].t >> s[i].a >> s[i].b;
    }
    
    for (int i = 1; i <= q; i ++)
    {
            task[i].l = readInt();
            task[i].y = readInt();
            task[i].idx = i;
        ///cin >> task[i].l >> task[i].y, task[i].idx = i;
    }
}
    
unordered_map < int, int > rev;
int dif, back_to[2 * maxn];
    
int get_mid(int left, int right)
{
    if (left == right)
        return rev[left];
    
    int lf = rev[left], rf = rev[right];
    while(lf <= rf)
    {
        int mf = (lf + rf) / 2;
        if (abs(left - back_to[mf]) <= abs(right - back_to[mf]))
            lf = mf + 1;
        else
            rf = mf - 1;
    }
    
    return rf;
}
void compress_data()
{
    vector < int > cor;
    for (int i = 1; i <= n; i ++)
        cor.push_back(s[i].x);
    for (int i = 1; i <= q; i ++)
        cor.push_back(task[i].l);
    
    sort(cor.begin(), cor.end());
    int sz = cor.size();
    
    for (int i = 0; i < cor.size(); i ++)
    {
        if (i != 0 || cor[i - 1] != cor[i])
        {
            dif ++;
            rev[cor[i]] = dif;
            back_to[dif] = cor[i];
        }
    }
}
    
    
bool cmp_query(query t1, query t2)
{
    return t1.l < t2.l;
}
    
struct event
{
    int type, cor, add, arrive;
    
    event(int _type, int _cor, int _add, int _arrive)
    {
        type = _type;
        cor = _cor;
        add = _add;
        arrive = _arrive;
    }
};
    
bool cmp_event(event e1, event e2)
{
    if (e1.arrive != e2.arrive)
        return e1.arrive < e2.arrive;
    
    if (e1.add != e2.add)
        return e1.add < e2.add;
    
    return e1.cor < e2.cor; /// could have dublicates
}
    
    
    
multiset < int > act[maxn];
    
struct interval_ray
{
    int s, e;
    pair < int, int > ray;
    
    interval_ray(int _s, int _e, pair < int, int > _ray)
    {
        s = _s;
        e = _e;
        ray = _ray;
    }
};
    
vector < interval_ray > seg_left, seg_right;
    
map < pair < int, int >, int > ray_right[maxn], ray_left[maxn];
vector < int > dat;
void make_left_segment(int start, int finish, int timer, int type)
{
    ///cout << "left " << start << " " << finish << " " << timer << endl;
    seg_left.push_back(interval_ray(ray_left[type][{start, finish}], timer - 1, {start, finish}));
    ray_left[type][{start, finish}] = 0;
}
    
void make_right_segment(int start, int finish, int timer, int type)
{
    
    seg_right.push_back(interval_ray(ray_right[type][{start, finish}], timer - 1, {start, finish}));
    ray_right[type][{start, finish}] = 0;
}
    
void add_event(int type, int cor, int timer)
{
    multiset < int > :: iterator it = act[type].upper_bound(cor);
    int aft = *it;
    int bef = *prev(it);
    
    if (bef == -inf && aft == inf)
    {
        
        make_right_segment(-inf, inf, timer, type);
        ray_left[type][{cor, -inf}] = timer;
        ray_right[type][{cor, +inf}] = timer;
    }
    else
    if (bef == - inf)
    {
        make_left_segment(aft, -inf, timer, type);
        int mid = (cor + aft) / 2;
        ray_right[type][{cor, mid}] = timer;
        ray_left[type][{aft, mid + 1}] = timer;
        ray_left[type][{cor, -inf}] = timer;
    }
    else
    if (aft == inf)
    {
        make_right_segment(bef, inf, timer, type);
        int mid = (bef + cor) / 2;
        ray_left[type][{cor, mid + 1}] = timer;
        ray_right[type][{bef, mid}] = timer;
        ray_right[type][{cor, inf}] = timer;
    }
    else
    {
        int mid = (bef + aft) / 2;
        make_right_segment(bef, mid, timer, type);
        make_left_segment(aft, mid + 1, timer, type);
        int mid_left = (bef + cor) / 2;
        ray_right[type][{bef, mid_left}] = timer;
        ray_left[type][{cor, mid_left + 1}] = timer;
        int mid_right = (cor + aft) / 2;
        ray_right[type][{cor, mid_right}] = timer;
        ray_left[type][{aft, mid_right + 1}] = timer;
    }
    
    act[type].insert(cor);
}
    
    
void remove_event(int type, int cor, int timer)
{
    multiset < int > :: iterator it = act[type].find(cor);
    int aft = *next(it);
    int bef = *prev(it);
    
    if (bef == -inf && aft == inf)
    {
        ///cout << "reverse " << timer << endl;
    
        make_left_segment(cor, -inf, timer, type);
        make_right_segment(cor, +inf, timer, type);
        ray_right[type][{-inf, inf}] = timer;
    
    }
    else
    if (bef == -inf)
    {
    
        ///cout << "step " << timer << endl;
        make_left_segment(cor, -inf, timer, type);
        int mid = (cor + aft) / 2;
        make_right_segment(cor, mid, timer, type);
        make_left_segment(aft, mid + 1, timer, type);
                ray_left[type][{aft, -inf}] = timer;
    
    
    }
    else
    if (aft == inf)
    {
    
        make_right_segment(cor, inf, timer, type);
        int mid = (bef + cor) / 2;
        make_left_segment(cor, mid + 1, timer, type);
        make_right_segment(bef, mid, timer, type);
                ray_right[type][{bef, inf}] = timer;
    }
    else
    {
        int mid = (bef + aft) / 2;
        ///assert((ray_right[type][{bef, mid}]) == 0);
        ///assert((ray_left[type][{aft, mid + 1}]) == 0);
    
        int mid_left = (bef + cor) / 2;
        make_right_segment(bef, mid_left, timer, type);
        make_left_segment(cor, mid_left + 1, timer, type);
        int mid_right = (aft + cor) / 2;
        make_right_segment(cor, mid_right, timer, type);
        make_left_segment(aft, mid_right + 1, timer, type);
    
                ray_right[type][{bef, mid}] = timer;
        ray_left[type][{aft, mid + 1}] = timer;
    
    }
    
    act[type].erase(it);
}
    
int ans[maxn];
    
vector < interval_ray > tree_left[maxn * 4], tree_right[maxn * 4];
int pt_lf[4 * maxn], bs_lf[4 * maxn];
int pt_rf[4 * maxn], bs_rf[4 * maxn];
    
bool cmp_ray_second(interval_ray r1, interval_ray r2)
{
    return r1.ray.second < r2.ray.second;
}
void update_range(int root, int left, int right, int qleft, int qright, interval_ray &ray, int type)
{
    if (left > qright || right < qleft)
        return;
    
    if (left >= qleft && right <= qright)
    {
        if (type == -1)
            tree_left[root].push_back(ray);
        else
            tree_right[root].push_back(ray);
        return;
    }
    
    int mid = (left + right) / 2;
    update_range(root * 2, left, mid, qleft, qright, ray, type);
    update_range(root * 2 + 1, mid + 1, right, qleft, qright, ray, type);
    
}
    
unordered_map < int, int > event_times;
    
void answer_queries()
{
    sort(task + 1, task + q + 1, cmp_query);
    
    vector < event > events;
    for (int i = 1; i <= n; i ++)
    {
        events.push_back(event(s[i].t, s[i].x, 1, s[i].a));
        events.push_back(event(s[i].t, s[i].x, -1, s[i].b + 1));
    }
    
    sort(events.begin(), events.end(), cmp_event);
    
    for (int i = 1; i <= k; i ++)
    {
        act[i].insert(-inf);
        act[i].insert(inf);
        ray_right[i][{-inf, inf}] = 1;
    }
    
    
    int cnt = 0;
    dat.push_back(1);
    dat.push_back(0);
    
    for (event cur : events)
    {
        ///dat.push_back(cur.arrive - 1);
        dat.push_back(cur.arrive);
        ///cout << "event " << cur.arrive << " " << cur.add << " " << cur.cor << " " << cur.type << endl;
        if (cur.add == 1)
            add_event(cur.type, cur.cor, cur.arrive);
        else
            remove_event(cur.type, cur.cor, cur.arrive);
    }
    
    dat.push_back(inf - 1);
    dat.push_back(inf);
    
    for (int i = 1; i <= q; i ++)
        dat.push_back(task[i].y);
    
    sort(dat.begin(), dat.end());
    cnt ++;
    event_times[dat[0]] = cnt;
    for (int i = 1; i < dat.size(); i ++)
    {
        if (dat[i] == dat[i - 1])
            continue;
        cnt ++;
        event_times[dat[i]] = cnt;
    }
    
    map < pair < int, int >, int > :: iterator it;
    for (int i = 1; i <= k; i ++)
        for (it = ray_right[i].begin(); it != ray_right[i].end(); it ++)
        {
            ///cout << it -> first.first << " :: " << it -> first.second << " " << it -> second << endl;
            if (it -> second != 0)
                make_right_segment(it -> first.first, it -> first.second, inf, i);
        }
    
    
    for (int i = 1; i <= k; i ++)
        for (it = ray_left[i].begin(); it != ray_left[i].end(); it ++)
        {
            if (it -> second != 0)
            {
            ///cout << "here " << endl;
                make_left_segment(it -> first.first, it -> first.second, inf, i);
            }
        }
    
    sort(seg_right.begin(), seg_right.end(), cmp_ray_second);
    sort(seg_left.begin(), seg_left.end(), cmp_ray_second);
    for (interval_ray cur : seg_left)
    {
        //assert(event_times[cur.e + 1] != 0);
        update_range(1, 1, cnt, event_times[cur.s], event_times[cur.e + 1] - 1, cur, -1);
    ///    cout << "left ray " << cur.s << " " << cur.e << " " << cur.ray.first << " " << cur.ray.second << endl;
    }
    
    for (interval_ray cur : seg_right)
    {
        //assert(event_times[cur.e + 1] != 0);
        update_range(1, 1, cnt, event_times[cur.s], event_times[cur.e + 1] - 1, cur, 1);
        ///cout << "right ray " << cur.s << " " << cur.e << " " << cur.ray.first << " " << cur.ray.second << endl;
    }
    
    
    for (int i = 1; i <= 4 * cnt; i ++)
    {
        pt_rf[i] = (int)(tree_right[i].size()) - 1;
        bs_rf[i] = inf;
    
        pt_lf[i] = 0;
        bs_lf[i] = -inf;
        ///sort(tree_right[i].begin(), tree_right[i].end(), cmp_ray_second);
        ///sort(tree_left[i].begin(), tree_left[i].end(), cmp_ray_second);
    }
    
    for (int i = q; i > 0; i --)
    {
        int longest = 0;
        int pos = event_times[task[i].y];
        int root = 1, left = 1, right = cnt;
    
        while(true)
        {
    
            while(pt_rf[root] >= 0 && task[i].l <= tree_right[root][pt_rf[root]].ray.second)
            {
                bs_rf[root] = min(bs_rf[root], tree_right[root][pt_rf[root]].ray.first);
                pt_rf[root] --;
            }
            longest = max(longest, task[i].l - bs_rf[root]);
    
    
            if (left == right)
                break;
    
            int mid = (left + right) / 2;
            if (pos <= mid)
            {
                root *= 2;
                right = mid;
            }
            else
            {
                root = root * 2 + 1;
                left = mid + 1;
            }
        }
    
        ans[task[i].idx] = max(ans[task[i].idx], longest);
    }
    
    for (int i = 1; i <= q; i ++)
    {
        int longest = 0;
        int pos = event_times[task[i].y];
        int root = 1, left = 1, right = cnt;
        while(true)
        {
            ///cout << "step " << root << " " << left << " " << right << endl;
            while(pt_lf[root] < tree_left[root].size() && tree_left[root][pt_lf[root]].ray.second <= task[i].l)
            {
                bs_lf[root] = max(bs_lf[root], tree_left[root][pt_lf[root]].ray.first);
                pt_lf[root] ++;
            }
            longest = max(longest, bs_lf[root] - task[i].l);
            /**for (interval_ray cur : tree_left[root])
            {
                if (task[i].l >= cur.ray.second)
                    longest = max(longest, cur.ray.first - task[i].l);
            }*/
    
    
            if (left == right)
                break;
    
            int mid = (left + right) / 2;
            if (pos <= mid)
            {
                root *= 2;
                right = mid;
            }
            else
            {
                root = root * 2 + 1;
                left = mid + 1;
            }
        }
    
        ans[task[i].idx] = max(ans[task[i].idx], longest);
    }
    
    for (int i = 1; i <= q; i ++)
    {
        if (ans[i] > 2e8)
            cout << -1 << endl;
        else
            cout << ans[i] << endl;
    }
}
void solve()
{
    input();
    ///compress_data();
    answer_queries();
}
    
void speed()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
}
int main()
{
    
    speed();
    solve();
    return 0;
}
    
/**
2 1 2
3 1 1 3
5 1 3 4
3 3
3 4
    
    
    
    
4 2 4
3 1 1 10
9 2 2 4
7 2 5 7
4 1 8 10
5 3
5 6
5 9
1 10
    
2 1 3
1 1 1 4
1 1 2 6
1 3
1 5
1 7
    
1 1 1
100000000 1 1 1
1 1
    
    
    
*/

Compilation message

new_home.cpp: In function 'void compress_data()':
new_home.cpp:96:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   96 |     for (int i = 0; i < cor.size(); i ++)
      |                     ~~^~~~~~~~~~~~
new_home.cpp:94:9: warning: unused variable 'sz' [-Wunused-variable]
   94 |     int sz = cor.size();
      |         ^~
new_home.cpp: In function 'void answer_queries()':
new_home.cpp:356:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  356 |     for (int i = 1; i < dat.size(); i ++)
      |                     ~~^~~~~~~~~~~~
new_home.cpp:456:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<interval_ray>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  456 |             while(pt_lf[root] < tree_left[root].size() && tree_left[root][pt_lf[root]].ray.second <= task[i].l)
      |                   ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 42 ms 211796 KB Output is correct
2 Correct 42 ms 211812 KB Output is correct
3 Correct 41 ms 211800 KB Output is correct
4 Correct 42 ms 211792 KB Output is correct
5 Correct 41 ms 211928 KB Output is correct
6 Correct 43 ms 212312 KB Output is correct
7 Correct 43 ms 212308 KB Output is correct
8 Correct 43 ms 212312 KB Output is correct
9 Correct 42 ms 212308 KB Output is correct
10 Correct 43 ms 212240 KB Output is correct
11 Correct 43 ms 212052 KB Output is correct
12 Correct 43 ms 212048 KB Output is correct
13 Correct 42 ms 212048 KB Output is correct
14 Correct 41 ms 212052 KB Output is correct
15 Correct 45 ms 212320 KB Output is correct
16 Correct 42 ms 212316 KB Output is correct
17 Correct 43 ms 212316 KB Output is correct
18 Correct 42 ms 212316 KB Output is correct
19 Correct 43 ms 212324 KB Output is correct
20 Correct 48 ms 212316 KB Output is correct
21 Correct 42 ms 211860 KB Output is correct
22 Correct 43 ms 212304 KB Output is correct
23 Correct 44 ms 212304 KB Output is correct
24 Correct 43 ms 212304 KB Output is correct
25 Correct 42 ms 212304 KB Output is correct
26 Correct 42 ms 212052 KB Output is correct
27 Correct 42 ms 211916 KB Output is correct
28 Correct 44 ms 212180 KB Output is correct
29 Correct 42 ms 212152 KB Output is correct
30 Correct 41 ms 211796 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 42 ms 211796 KB Output is correct
2 Correct 42 ms 211812 KB Output is correct
3 Correct 41 ms 211800 KB Output is correct
4 Correct 42 ms 211792 KB Output is correct
5 Correct 41 ms 211928 KB Output is correct
6 Correct 43 ms 212312 KB Output is correct
7 Correct 43 ms 212308 KB Output is correct
8 Correct 43 ms 212312 KB Output is correct
9 Correct 42 ms 212308 KB Output is correct
10 Correct 43 ms 212240 KB Output is correct
11 Correct 43 ms 212052 KB Output is correct
12 Correct 43 ms 212048 KB Output is correct
13 Correct 42 ms 212048 KB Output is correct
14 Correct 41 ms 212052 KB Output is correct
15 Correct 45 ms 212320 KB Output is correct
16 Correct 42 ms 212316 KB Output is correct
17 Correct 43 ms 212316 KB Output is correct
18 Correct 42 ms 212316 KB Output is correct
19 Correct 43 ms 212324 KB Output is correct
20 Correct 48 ms 212316 KB Output is correct
21 Correct 42 ms 211860 KB Output is correct
22 Correct 43 ms 212304 KB Output is correct
23 Correct 44 ms 212304 KB Output is correct
24 Correct 43 ms 212304 KB Output is correct
25 Correct 42 ms 212304 KB Output is correct
26 Correct 42 ms 212052 KB Output is correct
27 Correct 42 ms 211916 KB Output is correct
28 Correct 44 ms 212180 KB Output is correct
29 Correct 42 ms 212152 KB Output is correct
30 Correct 41 ms 211796 KB Output is correct
31 Correct 1034 ms 363192 KB Output is correct
32 Correct 124 ms 228988 KB Output is correct
33 Correct 1127 ms 365772 KB Output is correct
34 Correct 1000 ms 364060 KB Output is correct
35 Correct 1068 ms 364292 KB Output is correct
36 Correct 1097 ms 366688 KB Output is correct
37 Correct 778 ms 351832 KB Output is correct
38 Correct 795 ms 351112 KB Output is correct
39 Correct 665 ms 323940 KB Output is correct
40 Correct 690 ms 332448 KB Output is correct
41 Correct 747 ms 313064 KB Output is correct
42 Correct 749 ms 315000 KB Output is correct
43 Correct 94 ms 225092 KB Output is correct
44 Correct 746 ms 310648 KB Output is correct
45 Correct 725 ms 301692 KB Output is correct
46 Correct 598 ms 284724 KB Output is correct
47 Correct 476 ms 278052 KB Output is correct
48 Correct 394 ms 274516 KB Output is correct
49 Correct 488 ms 289652 KB Output is correct
50 Correct 565 ms 306552 KB Output is correct
51 Correct 510 ms 283000 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2037 ms 964976 KB Output is correct
2 Correct 1939 ms 953300 KB Output is correct
3 Correct 1771 ms 891172 KB Output is correct
4 Correct 1980 ms 926832 KB Output is correct
5 Correct 1704 ms 906876 KB Output is correct
6 Correct 1880 ms 831968 KB Output is correct
7 Correct 1737 ms 888864 KB Output is correct
8 Correct 1969 ms 898520 KB Output is correct
9 Correct 2080 ms 878136 KB Output is correct
10 Correct 2235 ms 852328 KB Output is correct
11 Correct 1793 ms 907336 KB Output is correct
12 Correct 2013 ms 872308 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4963 ms 949668 KB Output is correct
2 Correct 421 ms 295356 KB Output is correct
3 Correct 4967 ms 994124 KB Output is correct
4 Correct 2914 ms 973500 KB Output is correct
5 Correct 4072 ms 880016 KB Output is correct
6 Correct 3675 ms 894508 KB Output is correct
7 Correct 4678 ms 994516 KB Output is correct
8 Correct 4899 ms 983652 KB Output is correct
9 Correct 2753 ms 956844 KB Output is correct
10 Correct 3724 ms 923260 KB Output is correct
11 Correct 4599 ms 944172 KB Output is correct
12 Execution timed out 5101 ms 976164 KB Time limit exceeded
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 42 ms 211796 KB Output is correct
2 Correct 42 ms 211812 KB Output is correct
3 Correct 41 ms 211800 KB Output is correct
4 Correct 42 ms 211792 KB Output is correct
5 Correct 41 ms 211928 KB Output is correct
6 Correct 43 ms 212312 KB Output is correct
7 Correct 43 ms 212308 KB Output is correct
8 Correct 43 ms 212312 KB Output is correct
9 Correct 42 ms 212308 KB Output is correct
10 Correct 43 ms 212240 KB Output is correct
11 Correct 43 ms 212052 KB Output is correct
12 Correct 43 ms 212048 KB Output is correct
13 Correct 42 ms 212048 KB Output is correct
14 Correct 41 ms 212052 KB Output is correct
15 Correct 45 ms 212320 KB Output is correct
16 Correct 42 ms 212316 KB Output is correct
17 Correct 43 ms 212316 KB Output is correct
18 Correct 42 ms 212316 KB Output is correct
19 Correct 43 ms 212324 KB Output is correct
20 Correct 48 ms 212316 KB Output is correct
21 Correct 42 ms 211860 KB Output is correct
22 Correct 43 ms 212304 KB Output is correct
23 Correct 44 ms 212304 KB Output is correct
24 Correct 43 ms 212304 KB Output is correct
25 Correct 42 ms 212304 KB Output is correct
26 Correct 42 ms 212052 KB Output is correct
27 Correct 42 ms 211916 KB Output is correct
28 Correct 44 ms 212180 KB Output is correct
29 Correct 42 ms 212152 KB Output is correct
30 Correct 41 ms 211796 KB Output is correct
31 Correct 1034 ms 363192 KB Output is correct
32 Correct 124 ms 228988 KB Output is correct
33 Correct 1127 ms 365772 KB Output is correct
34 Correct 1000 ms 364060 KB Output is correct
35 Correct 1068 ms 364292 KB Output is correct
36 Correct 1097 ms 366688 KB Output is correct
37 Correct 778 ms 351832 KB Output is correct
38 Correct 795 ms 351112 KB Output is correct
39 Correct 665 ms 323940 KB Output is correct
40 Correct 690 ms 332448 KB Output is correct
41 Correct 747 ms 313064 KB Output is correct
42 Correct 749 ms 315000 KB Output is correct
43 Correct 94 ms 225092 KB Output is correct
44 Correct 746 ms 310648 KB Output is correct
45 Correct 725 ms 301692 KB Output is correct
46 Correct 598 ms 284724 KB Output is correct
47 Correct 476 ms 278052 KB Output is correct
48 Correct 394 ms 274516 KB Output is correct
49 Correct 488 ms 289652 KB Output is correct
50 Correct 565 ms 306552 KB Output is correct
51 Correct 510 ms 283000 KB Output is correct
52 Correct 596 ms 345064 KB Output is correct
53 Correct 589 ms 347640 KB Output is correct
54 Correct 749 ms 348564 KB Output is correct
55 Correct 651 ms 328284 KB Output is correct
56 Correct 608 ms 332408 KB Output is correct
57 Correct 701 ms 317044 KB Output is correct
58 Correct 700 ms 330772 KB Output is correct
59 Correct 668 ms 336648 KB Output is correct
60 Correct 737 ms 320388 KB Output is correct
61 Correct 142 ms 246872 KB Output is correct
62 Correct 598 ms 356388 KB Output is correct
63 Correct 677 ms 343404 KB Output is correct
64 Correct 692 ms 343852 KB Output is correct
65 Correct 728 ms 338296 KB Output is correct
66 Correct 737 ms 320376 KB Output is correct
67 Correct 218 ms 248344 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 42 ms 211796 KB Output is correct
2 Correct 42 ms 211812 KB Output is correct
3 Correct 41 ms 211800 KB Output is correct
4 Correct 42 ms 211792 KB Output is correct
5 Correct 41 ms 211928 KB Output is correct
6 Correct 43 ms 212312 KB Output is correct
7 Correct 43 ms 212308 KB Output is correct
8 Correct 43 ms 212312 KB Output is correct
9 Correct 42 ms 212308 KB Output is correct
10 Correct 43 ms 212240 KB Output is correct
11 Correct 43 ms 212052 KB Output is correct
12 Correct 43 ms 212048 KB Output is correct
13 Correct 42 ms 212048 KB Output is correct
14 Correct 41 ms 212052 KB Output is correct
15 Correct 45 ms 212320 KB Output is correct
16 Correct 42 ms 212316 KB Output is correct
17 Correct 43 ms 212316 KB Output is correct
18 Correct 42 ms 212316 KB Output is correct
19 Correct 43 ms 212324 KB Output is correct
20 Correct 48 ms 212316 KB Output is correct
21 Correct 42 ms 211860 KB Output is correct
22 Correct 43 ms 212304 KB Output is correct
23 Correct 44 ms 212304 KB Output is correct
24 Correct 43 ms 212304 KB Output is correct
25 Correct 42 ms 212304 KB Output is correct
26 Correct 42 ms 212052 KB Output is correct
27 Correct 42 ms 211916 KB Output is correct
28 Correct 44 ms 212180 KB Output is correct
29 Correct 42 ms 212152 KB Output is correct
30 Correct 41 ms 211796 KB Output is correct
31 Correct 1034 ms 363192 KB Output is correct
32 Correct 124 ms 228988 KB Output is correct
33 Correct 1127 ms 365772 KB Output is correct
34 Correct 1000 ms 364060 KB Output is correct
35 Correct 1068 ms 364292 KB Output is correct
36 Correct 1097 ms 366688 KB Output is correct
37 Correct 778 ms 351832 KB Output is correct
38 Correct 795 ms 351112 KB Output is correct
39 Correct 665 ms 323940 KB Output is correct
40 Correct 690 ms 332448 KB Output is correct
41 Correct 747 ms 313064 KB Output is correct
42 Correct 749 ms 315000 KB Output is correct
43 Correct 94 ms 225092 KB Output is correct
44 Correct 746 ms 310648 KB Output is correct
45 Correct 725 ms 301692 KB Output is correct
46 Correct 598 ms 284724 KB Output is correct
47 Correct 476 ms 278052 KB Output is correct
48 Correct 394 ms 274516 KB Output is correct
49 Correct 488 ms 289652 KB Output is correct
50 Correct 565 ms 306552 KB Output is correct
51 Correct 510 ms 283000 KB Output is correct
52 Correct 2037 ms 964976 KB Output is correct
53 Correct 1939 ms 953300 KB Output is correct
54 Correct 1771 ms 891172 KB Output is correct
55 Correct 1980 ms 926832 KB Output is correct
56 Correct 1704 ms 906876 KB Output is correct
57 Correct 1880 ms 831968 KB Output is correct
58 Correct 1737 ms 888864 KB Output is correct
59 Correct 1969 ms 898520 KB Output is correct
60 Correct 2080 ms 878136 KB Output is correct
61 Correct 2235 ms 852328 KB Output is correct
62 Correct 1793 ms 907336 KB Output is correct
63 Correct 2013 ms 872308 KB Output is correct
64 Correct 4963 ms 949668 KB Output is correct
65 Correct 421 ms 295356 KB Output is correct
66 Correct 4967 ms 994124 KB Output is correct
67 Correct 2914 ms 973500 KB Output is correct
68 Correct 4072 ms 880016 KB Output is correct
69 Correct 3675 ms 894508 KB Output is correct
70 Correct 4678 ms 994516 KB Output is correct
71 Correct 4899 ms 983652 KB Output is correct
72 Correct 2753 ms 956844 KB Output is correct
73 Correct 3724 ms 923260 KB Output is correct
74 Correct 4599 ms 944172 KB Output is correct
75 Execution timed out 5101 ms 976164 KB Time limit exceeded
76 Halted 0 ms 0 KB -