QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#867599#9684. 倾诉Tony22 218ms12032kbC++2010.6kb2025-01-23 20:06:142025-01-23 20:06:14

Judging History

This is the latest submission verdict.

  • [2025-01-23 20:06:14]
  • Judged
  • Verdict: 2
  • Time: 218ms
  • Memory: 12032kb
  • [2025-01-23 20:06:14]
  • Submitted

answer

#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
using ull = unsigned long long;
const int N = 2e4 + 35, lim = 22, mod1 = 998244353, mod2 = 1e9 + 7, inf = 1e9 + 2;
mt19937 rnd(0);
int tt, n, K, a[N], cur[N], prehigh[N];
int log2n, st[N][25];
int pre2[N], sum2[N];
ull sum[N][lim + 5];
int pw1[N * 2], pw2[N * 2], inv1[N * 2], inv2[N * 2];
int rt[N];
struct Msg{
	int len, a1, a2;
	Msg(){}
	Msg(int len, int a1, int a2) : len(len), a1(a1), a2(a2) {}
	friend Msg operator + (const Msg &a, const Msg &b){
		return Msg(a.len + b.len, (a.a1 + 1ll * b.a1 * pw1[a.len]) % mod1, (a.a2 + 1ll * b.a2 * pw2[a.len]) % mod2);
	}
}all1[N];
bool same(const Msg &a, const Msg &b){
	return a.len == b.len && a.a1 == b.a1 && a.a2 == b.a2;
}
struct Str{
	int k, highbit, lowbit, b[N];
	int hs1[N], hs2[N];
	void init(int l, int r, int _k){
		for (int i = 1; i <= n + lim; i++) b[i] = 0;
		for (int i = l; i <= r; i++)
			for (int j = 0; j < lim; j++)
				if ((a[i] >> j) & 1)
					b[i + j]++;
		int c = 0;
		for (int i = 1; i <= n + lim; i++){
			c += b[i];
			b[i] = c % 2;
			c /= 2;
			if (b[i]) highbit = i;
		}
		for (int i = n + lim; i >= 1; i--)
			if (b[i])
				lowbit = i;
		for (int i = 1; i <= n + lim; i++){
			hs1[i] = (hs1[i - 1] + 1ll * b[i] * pw1[i]) % mod1;
			hs2[i] = (hs2[i - 1] + 1ll * b[i] * pw2[i]) % mod2;
		}
	}
	Msg ask(int l, int r) const{
		int l2 = max(1, l), r2 = min(n + lim, r);
		int x1 = (hs1[r2] - hs1[l2 - 1] + mod1) % mod1, x2 = (hs2[r2] - hs2[l2 - 1] + mod2) % mod2;
		if (l >= 0) return Msg(r - l + 1, 1ll * x1 * inv1[l] % mod1, 1ll * x2 * inv2[l] % mod2);
		else return Msg(r - l + 1, 1ll * x1 * pw1[-l] % mod1, 1ll * x2 * pw2[-l] % mod2);
	}
	int ask(int x) const{
		if (1 <= x && x <= n + lim) return b[x];
		else return 0;
	}
};
struct tree{
#define mid ((l + r) >> 1)
	int tot;
	struct node{
		int ls, rs;
		Msg msg;
	}a[N * 22 * 22];
	void build(int &p, int l, int r){
		p = ++tot;
		if (l == r){
			a[p].msg = Msg(1, 0, 0);
			return;
		}
		build(a[p].ls, l, mid);
		build(a[p].rs, mid + 1, r);
		a[p].msg = a[a[p].ls].msg + a[a[p].rs].msg;
	}
	void add(int &p, int o, int l, int r, int s, int k){
		a[p = ++tot] = a[o];
		if (l == r){
			a[p].msg = Msg(1, k, k);
			return;
		}
		if (s <= mid) add(a[p].ls, a[o].ls, l, mid, s, k);
		else add(a[p].rs, a[o].rs, mid + 1, r, s, k);
		a[p].msg = a[a[p].ls].msg + a[a[p].rs].msg;
	}
	Msg ask(int p, int l, int r, int s, int t){
		if (s <= l && r <= t) return a[p].msg;
		Msg res(0, 0, 0);
		if (s <= mid) res = res + ask(a[p].ls, l, mid, s, t);
		if (t > mid) res = res + ask(a[p].rs, mid + 1, r, s, t);
		return res;
	}
	Msg ask(int p, int l, int r, int s){
		return ask(p, l, r, s, s);
	}
	int askr(int p, int l, int r, int s){
		if (a[p].msg.a1 == 0 && a[p].msg.a2 == 0) return 0;
		if (s <= l){
			if (l == r) return l;
			int res = askr(a[p].ls, l, mid, s);
			if (res) return res;
			else return askr(a[p].rs, mid + 1, r, s);
		}
		if (s <= mid){
			int res = askr(a[p].ls, l, mid, s);
			if (res) return res;
			else return askr(a[p].rs, mid + 1, r, s);
		}else return askr(a[p].rs, mid + 1, r, s);
	}
	int ask2(int p, int l, int r, int s, int t, const Str &str){
		if (r <= s){
			if (same(a[p].msg, str.ask(t - (s - l), t - (s - r)))) return l - 1;
			if (l == r) return l;
			int res = ask2(a[p].rs, mid + 1, r, s, t, str);
			if (res > mid) return res;
			else return ask2(a[p].ls, l, mid, s, t, str);
		}
		if (mid < s){
			int res = ask2(a[p].rs, mid + 1, r, s, t, str);
			if (res > mid) return res;
			else return ask2(a[p].ls, l, mid, s, t, str);
		}else return ask2(a[p].ls, l, mid, s, t, str);
	}
#undef mid
}T;
template<typename T> int cmp(T a, T b){
	if (a > b) return 1;
	else if (a == b) return 0;
	else return -1;
}
struct Msg2{
	int tp, len, num;
	Msg2(){}
	Msg2(int tp, int len, int num) : tp(tp), len(len), num(num) {}
};
pair<vector<Msg2>, int> getMsg(int l, int r){
	if (r - l <= lim){
		ull x = sum[l][r - l], bits = 63 ^ __builtin_clzll(x), ph = l + bits;
		if (bits >= lim) return make_pair(vector<Msg2>{Msg2(0, lim, x & ((1 << lim) - 1)), Msg2(0, bits - lim + 1, x >> lim)}, ph);
		else return make_pair(vector<Msg2>{Msg2(0, bits + 1, x)}, ph);
	}else{
		int a = sum2[l], b = pre2[l];
		if (a >= b) return make_pair(vector<Msg2>{Msg2(0, lim, a - b), Msg2(2, prehigh[r] - (l + lim - 1), 0)}, prehigh[r]);
		else{
			int p = T.askr(rt[r], 1, n + lim, l + lim);
			if (p < prehigh[r]) return make_pair(vector<Msg2>{Msg2(0, lim, (1 << lim) + a - b), Msg2(1, p - (l + lim), 1), Msg2(1, 1, 0), Msg2(2, prehigh[r] - p, 0)}, prehigh[r]);
			else return make_pair(vector<Msg2>{Msg2(0, lim, (1 << lim) + a - b), Msg2(1, p - (l + lim), 1)}, prehigh[r] - 1);
		}
	}
}
struct Msg3{
	int l, r, k;
	Msg3(){}
	Msg3(int l, int r, int k) : l(l), r(r), k(k) {}
};
struct Compare{
	int k1;
	Str str;
	int pos[N], state[N];
	void init(int l, int r, int k){
		k1 = k;
		str.init(l, r, k1);
		for (int i = 1; i <= n; i++){
			pos[i] = T.ask2(rt[i], 1, n + lim, prehigh[i], str.highbit, str);
			state[i] = cmp(str.ask(str.highbit - (prehigh[i] - pos[i])), pos[i] ? T.ask(rt[i], 1, n + lim, pos[i]).a1 : 0);
		}
	}
	int ask(int l, int r, int k2){
		auto [vec, ph] = getMsg(l, r);
		if (str.highbit + k1 != ph + k2) return cmp(str.highbit + k1, ph + k2);
		int curlen = 0;
		while (!vec.empty()){
			Msg2 msg = vec.back();
			vec.pop_back();
			Msg res = str.ask(str.highbit - curlen - msg.len + 1, str.highbit - curlen);
			if (msg.tp == 0){
				int a = res.a1, b = msg.num;
				if (a != b) return cmp(a, b);
			}else if (msg.tp == 1){
				if (msg.num == 0 && !same(res, Msg(msg.len, 0, 0))) return 1;
				else if (msg.num == 1 && !same(res, all1[msg.len])) return -1;
			}else if (msg.tp == 2){
				if (pos[r] >= str.highbit - curlen - msg.len + 1) return state[r];
			}
			curlen += msg.len;
		}
		if (curlen <= str.highbit - str.lowbit) return 1;
		else return 0;
	}
}C1, C2;
int f[N][lim + 5];
struct tree2{
#define mid ((l + r) >> 1)
#define ls (now << 1)
#define rs (now << 1 | 1)
	int a[N << 2];
	void build(int now, int l, int r){
		a[now] = inf;
		if (l == r) return;
		build(ls, l, mid);
		build(rs, mid + 1, r);
	}
	void add(int now, int l, int r, int s, int k){
		if (l == r){
			a[now] = k;
			return;
		}
		if (s <= mid) add(ls, l, mid, s, k);
		else add(rs, mid + 1, r, s, k);
		a[now] = min(a[ls], a[rs]);
	}
	int ask(int now, int l, int r, int s, int t){
		if (s <= l && r <= t)
			return a[now];
		int res = inf;
		if (s <= mid) res = min(ask(ls, l, mid, s, t), res);
		if (t > mid) res = min(ask(rs, mid + 1, r, s, t), res);
		return res;
	}
#undef mid
#undef ls
#undef rs
}T2;
bool check(Msg3 curans){
	C1.init(curans.l, curans.r, curans.k);
	T2.build(1, 0, n);
	T2.add(1, 0, n, 0, 0);
	for (int i = 1; i <= n; i++){
		int rr = i - 1;
		bool flg = 0;
		for (int j = 0; j < lim && i + j <= n; j++)
			if (flg || C1.ask(i, i, n - (i + j)) >= 0){
				while (i - rr <= lim && rr > 0 && C1.ask(rr, i, n - (i + j)) >= 0) rr--;
				if (i - rr > lim){
					int l = 0, r = rr, mid;
					while (l <= r){
						mid = (l + r) >> 1;
						if (C1.ask(mid + 1, i, n - (i + j)) >= 0) r = mid - 1;
						else l = mid + 1;
					}
					rr = l;
				}
				f[i][j] = j ? f[i][j - 1] : inf;
				if (rr >= 0 && rr < i - lim) f[i][j] = min(T2.ask(1, 0, n, rr, i - lim - 1) + i + j - 1, f[i][j]);
				for (int k = max(i - lim, rr); k < i; k++) f[i][j] = min(f[k][min(lim - 1, j + (i - k - 1))] + i - k - 1 + j, f[i][j]);
				flg = 1;
			}else f[i][j] = inf;
		T2.add(1, 0, n, i, f[i][lim - 1] - i);
	}
	return f[n][0] <= K;
}
void solve(){
	cin >> n >> K;
	T.tot = 0;
	for (int i = 0; i <= n + lim; i++) cur[i] = 0;
	T.build(rt[0], 1, n + lim);
	for (int i = 1; i <= n; i++){
		rt[i] = rt[i - 1];
		cin >> a[i];
		int c = 0;
		prehigh[i] = prehigh[i - 1];
		for (int j = 0; j < lim; j++){
			c = c + ((a[i] >> j) & 1) + cur[i + j];
			if (cur[i + j] != c % 2) T.add(rt[i], rt[i], 1, n + lim, i + j, c % 2);
			cur[i + j] = c % 2;
			if (c) prehigh[i] = max(i + j, prehigh[i]);
			c /= 2;
		}
		pre2[i] = (pre2[i - 1] + a[i - 1]) / 2;
	}
	for (int i = 1; i <= n + lim; i++){
		sum2[i] = 0;
		for (int j = 0; j < lim && i + j <= n + lim; j++)
			if (cur[j])
				sum2[i] |= 1 << j;
	}
	for (int l = 1; l <= n; l++){
		ull cur = 0;
		for (int r = l; r <= n && r - l <= lim; r++){
			cur += (1ll * a[r]) << (r - l);
			sum[l][r - l] = cur;
		}
	}
	Msg3 Ml(1, 1, 0), Mr(1, n, n - 1), Mmid, ans;
	for (int i = 2; i <= n && i - Ml.l <= lim; i++)
		if (((1ll * a[i]) << (i - Ml.l)) < a[Ml.l])
			Ml = Msg3(i, i, 0);
	while (1){
		C1.init(Ml.l, Ml.r, Ml.k);
		C2.init(Mr.l, Mr.r, Mr.k);
		vector<array<int, 4>> vec;
		for (int i = 1; i <= n; i++){
			int l = i + 1, r = i;
			for (int j = 0; i + j <= n && j < lim; j++){
				if (C1.ask(r, i, n - (i + j)) != -1){
					int l2 = 1, r2 = r - 1, mid;
					while (l2 <= r2){
						mid = (l2 + r2) >> 1;
						if (C1.ask(mid, i, n - (i + j)) == -1) l2 = mid + 1;
						else r2 = mid - 1;
					}
					r = r2;
				}
				if (l > 1 && C2.ask(l - 1, i, n - (i + j)) == 1){
					int l2 = 1, r2 = l - 1, mid;
					while (l2 <= r2){
						mid = (l2 + r2) >> 1;
						if (C2.ask(mid, i, n - (i + j)) == 1) r2 = mid - 1;
						else l2 = mid + 1;
					}
					l = l2;
				}
				if (l <= r) vec.push_back({i, n - (i + j), l, r});
			}
		}
		long long sz = 0;
		for (auto [r, k, l1, l2] : vec) sz += l2 - l1 + 1;
		if (sz == 0) break;
		long long mid = (rnd() | ((1ll * rnd()) << 31)) % sz;
		for (auto [r, k, l1, l2] : vec)
			if (mid >= l2 - l1 + 1) mid -= l2 - l1 + 1;
			else{
				Mmid = Msg3(l1 + mid, r, k);
				break;
			}
		if (check(Mmid)) Mr = Mmid;
		else Ml = Mmid;
	}
	ans = check(Ml) ? Ml : Mr;
	for (int i = 1; i <= n + lim; i++) cur[i] = 0;
	for (int i = ans.l; i <= ans.r; i++){
		int c = 0;
		for (int j = 0; j < lim; j++){
			c = c + ((a[i] >> j) & 1) + cur[i + j + ans.k];
			cur[i + j + ans.k] = c % 2;
			c /= 2;
		}
	}
	int i = n + lim;
	while (cur[i] == 0) i--;
	for (; i >= 0; i--) cout << cur[i];
	cout << endl;
}
int main(){
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
//	freopen("in.txt", "r", stdin);
//	freopen("out.txt", "w", stdout);
	pw1[0] = pw2[0] = inv1[0] = inv2[0] = 1;
	for (int i = 1; i < N * 2; i++){
		pw1[i] = 2ll * pw1[i - 1] % mod1;
		pw2[i] = 2ll * pw2[i - 1] % mod2;
		inv1[i] = 1ll * inv1[i - 1] * ((mod1 + 1) / 2) % mod1;
		inv2[i] = 1ll * inv2[i - 1] * ((mod2 + 1) / 2) % mod2;
	}
	all1[1] = Msg(1, 1, 1);
	for (int i = 2; i < N; i++) all1[i] = all1[i - 1] + all1[1];
	cin >> tt;
	while (tt--) solve();
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 2
Accepted

Test #1:

score: 2
Accepted
time: 0ms
memory: 7912kb

input:

5
6 1
11764 28428 28179 18698 6443 20288
6 3
29 17548 61962 31242 8172 4107
6 15
7 2 239427 137145 171239 3
6 4
294 211 407 190 2 2
6 5
197190 265870 12121 144584 21313 14169

output:

110111100001100000000
101110011000100110000
11101001110100001100000
11000110110000
10100110100010001101100

result:

ok 5 lines

Test #2:

score: 2
Accepted
time: 0ms
memory: 9852kb

input:

3
10 9
11333 23 34461 34357 354 4 3 55 3 3
10 13
5 17524 48186 2193 17524 17524 20914 15829 17524 6
10 5
128279 27396 7992 44204 132529 84302 26783 3378 42535 3786

output:

11010110100011011110
101111000011101000000000
11010100100010110010000000

result:

ok 3 lines

Test #3:

score: 2
Accepted
time: 0ms
memory: 7920kb

input:

1
30 23
129534 106530 312047 478493 635175 682687 771242 851161 898940 103771 4 22344 668706 758190 219263 803071 787124 804602 997769 398659 874234 1 845912 226469 600617 203296 540318 171121 5 103637

output:

1011110001001010101000000000000000000000000000000

result:

ok single line: '1011110001001010101000000000000000000000000000000'

Test #4:

score: 2
Accepted
time: 2ms
memory: 9972kb

input:

1
30 20
24369 112417 273642 91342 16920 82890 51488 110843 350768 2127 32310 317716 289575 345557 10461 133151 237824 131339 154529 77796 16773 128740 561207 292189 244465 178375 50425 149932 60698 32020

output:

100000110011011000011001110000000000000000000000

result:

ok single line: '100000110011011000011001110000000000000000000000'

Test #5:

score: 2
Accepted
time: 1ms
memory: 9996kb

input:

1
30 22
5164 3437 1409 1477 1234 290 641 8387 2389 4783 1704 1430 2859 422 368 348 3778 2161 1898 964 357 763 380 3870 6050 1136 3613 1747 975 131

output:

11100100111010100100000000000000000000000

result:

ok single line: '11100100111010100100000000000000000000000'

Test #6:

score: 2
Accepted
time: 1ms
memory: 9980kb

input:

1
30 16
78284 104679 51060 38372 468848 144187 84013 249991 72147 295666 63152 22000 35446 88085 67085 19719 4766 988 384917 450684 101500 548119 105206 420503 54774 10663 13882 48365 104067 33372

output:

11100010001001000011101010000000000000000000000

result:

ok single line: '11100010001001000011101010000000000000000000000'

Test #7:

score: 2
Accepted
time: 2ms
memory: 12028kb

input:

1
30 20
93587 95074 833612 98114 468073 405234 294453 151570 336309 555067 71292 497114 301076 302914 130800 17777 145963 834497 152338 526181 242311 266037 315170 36843 72099 59791 95401 96269 181758 156382

output:

111011010101101111000000101010000000000000000000

result:

ok single line: '111011010101101111000000101010000000000000000000'

Test #8:

score: 2
Accepted
time: 1ms
memory: 9964kb

input:

1
30 20
7 5 5 2 5 2 4 2 1 8 244222 244222 244222 244222 244222 244222 244222 244222 244222 244222 244222 244222 244222 244222 244222 244222 8 6 8 1

output:

111011101000110110010001100000001000000000000

result:

ok single line: '111011101000110110010001100000001000000000000'

Test #9:

score: 2
Accepted
time: 4ms
memory: 12028kb

input:

1
30 30
1486 898 1035 2327 2777 3385 4083 330 2925 3348 1324 826 3223 3418 45 184 54 591 44 4301 4453 1558 601 1914 2114 8 1 93 7 6

output:

10011001000001011100000000000000000000

result:

ok single line: '10011001000001011100000000000000000000'

Test #10:

score: 2
Accepted
time: 1ms
memory: 12032kb

input:

1
30 132
999998 999998 999999 999999 1000000 1000000 1000000 1000000 999999 1000000 999999 1000000 999998 999999 999999 999999 999998 1 1 1 1 1 1 1 1 1 1 1 1 1

output:

10110111000110101111000000000000000000

result:

ok single line: '10110111000110101111000000000000000000'

Subtask #2:

score: 0
Wrong Answer

Dependency #1:

100%
Accepted

Test #11:

score: 10
Accepted
time: 2ms
memory: 11900kb

input:

33
6 1
2201 30891 22926 51021 5381 1953
6 1
17621 35116 7069 5597 24627 4779
6 8
6 19015 19015 19015 19015 2
6 4
19047 11041 11837 2027 1116 2645
6 7
117530 117530 117530 117530 117530 4
6 5
26692 20497 5915 6516 6714 1098
6 7
348470 348470 348470 348470 348470 7
6 3
2 1 2378 4 107252 2
6 2
9325 369...

output:

111100010101011100000
110000000110011000000
10010100100101100000
1110111101011010100
1110010110010001000000
10001011101010100100
101010100010100010000000
1101000101111100000000
1001001101001001000000
10100110001010100000
1111111101011100000
1110110000100000000
1000010001100101000000
1010011111111001...

result:

ok 33 lines

Test #12:

score: 10
Accepted
time: 2ms
memory: 12028kb

input:

20
10 10
7398 2663 2 28570 2 2 2 2 2 3
10 10
5 4 486615 486615 486615 521695 469075 486615 486615 7
10 5
5132 160984 19067 83543 351799 157254 40607 16829 39349 21513
10 3
2234 2158 11383 7501 3047 737 626 4487 5017 4908
10 5
31661 111680 91073 9607 12095 42688 118218 47360 392 51408
10 3
28734 5994...

output:

1110111000011011000
1111111010111011111000000000
110000100111001110000000000
10101101101101010000000
11010001011110101100000000
111000110111001000000000000
11111011001001000000000000
11110011101111100000000
1000111111101100000000000
1110010101000111001000000000
11100111110110011100000
10110011111001...

result:

ok 20 lines

Test #13:

score: 0
Wrong Answer
time: 5ms
memory: 9984kb

input:

8
25 15
2317 3833 9894 20350 54995 518 77 9839 15551 281 5127 13100 16 13930 16 16 3872 44999 28972 30892 63777 36955 9212 13452 6
25 24
99488 111510 114067 99889 114169 167030 178257 168039 292710 214341 275210 350436 319813 436188 410390 450309 445475 482666 516698 666862 623999 693281 692643 7096...

output:

110110011010100000000000000000000000000
10101101010000100100000000000000000000000000
111010011010100000000000000000
1000010011011111000000000000000000000
11111000000101000000000000000000000000000
10110110001100111011110110000000000000000
111010000000000000000000000000
1001101000001101010101000000000...

result:

wrong answer 3rd lines differ - expected: '111001101011010001100000010000', found: '111010011010100000000000000000'

Subtask #3:

score: 0
Skipped

Dependency #2:

0%

Subtask #4:

score: 0
Skipped

Dependency #3:

0%

Subtask #5:

score: 0
Time Limit Exceeded

Test #60:

score: 17
Accepted
time: 73ms
memory: 11900kb

input:

1666
6 1
282 719 29 355 388 275
6 1
348 766 91 299 474 96
6 23
5 2 8554 8554 8554 2
6 1
84 195 23 37 120 117
6 3
8 3 51 62 28 5
6 3
3 64 64 4 4 2
6 9
5 552 552 552 552 5
6 3
3611 1144 417 3461 459 755
6 3
777 315 1007 5 2 1061
6 6
1300 2101 4 1877 360 2434
6 1
384 713 168 25 524 390
6 3
203 18 305 1...

output:

110000100100000
111011010000000
1000010110111000000
1111000100000
11111000000
11110000000
100011001000000
100010001101100000
10000100101000000
100110000010000000
1000001100100000
10011001100000
111001011010000000
1100000110100000
1110111111110000
101011111000000
1000011110000
100101000000000
1011110...

result:

ok 1666 lines

Test #61:

score: 17
Accepted
time: 102ms
memory: 12028kb

input:

1000
10 10
1765 725 287 2983 1959 3 855 1094 2960 4
10 4
856 92 85 15 31 233 718 137 64 213
10 8
4575 2773 2373 497 8150 5057 2455 9107 5 5
10 8
216 189 143 218 154 222 153 147 2 5
10 3
77 74 30 27 241 85 57 8 66 86
10 7
3471 3468 5868 2881 478 3775 2 470 1 3
10 5
317 2460 139 3033 107 359 4 1716 3 ...

output:

101110011000000000000
1010110010000000000
1100010110011110000000
11011110000000000
10101111110000000
110110001111000000000
100100100101100000000
1101111101000000000
10111010010110000000
1111110111101100
10100101000100000000
10100110000110000000
1011110110101000000000
10011110100000000000
10000100100...

result:

ok 1000 lines

Test #62:

score: 0
Time Limit Exceeded

input:

400
25 16
678 1005 3339 2086 1363 1802 549 124 406 305 325 742 3344 2194 640 2744 383 1494 2369 1209 667 120 423 243 91
25 16
5 6 5 4 4 37 6 2 2 2 2 2 2 2 2 7 13 12 9 10 15 32 32 1 4
25 18
848 963 139 413 186 82 1329 524 629 70 40 324 1255 282 581 193 439 189 81 268 769 733 22 36 332
25 23
61 41 39 ...

output:


result:


Subtask #6:

score: 0
Time Limit Exceeded

Test #80:

score: 16
Accepted
time: 154ms
memory: 12032kb

input:

3333
6 1000000000
131727 7 4 170194 6 59263
6 1000000000
417714 286613 7 310122 6 4
6 1000000000
63764 2430 2696 6699 8478 22261
6 1000000000
217 131 6 1487 2927 2
6 1000000000
26225 27991 3842 72525 4521 5231
6 1000000000
34409 26001 23563 19345 30764 24919
6 1000000000
97981 138532 59280 82393 128...

output:

10100110001101001000000
10010111011100001100000
101011011110101000000
10110111001100000
110010000010110110000
111100110010110100000
11111011000100010000000
11001111100101100
1100000101001001010100000
100000000000
100111000110001000000
101110110010100111000000
10000000000000000000000
1100000111101000...

result:

ok 3333 lines

Test #81:

score: 16
Accepted
time: 218ms
memory: 9856kb

input:

2000
10 1000000000
4 225227 95031 258432 108444 260818 190505 154686 1 5
10 1000000000
541067 480522 7 372550 533382 366492 200177 240412 6 1
10 1000000000
10004 14230 86468 2812 9690 7106 21976 45928 9749 30567
10 1000000000
12217 2718 4247 9981 12911 1845 2048 4 1387 16384
10 1000000000
46966 1438...

output:

11110100000110100010000000
101001100100010010010000000
1111111110010010000000000
1000000000000000000000000
11010100011000000000
110010110111010010100000000
11000010111011011011000000000
1001001110000111010000000000
11110110001100100100000000
101110111011100111000000000
100001001101001011110000000
10...

result:

ok 2000 lines

Test #82:

score: 0
Time Limit Exceeded

input:

800
25 1000000000
87944 70771 86657 342502 146802 122800 216223 248367 121688 22026 9518 1128 64025 63379 231058 292954 218186 35314 64373 10501 20550 32081 39386 10095 78181
25 1000000000
54665 3 129508 98607 92526 68177 57466 62726 21642 52766 23748 16110 18286 9033 4 6 3 6 2 5 7 5 7 1 4
25 100000...

output:


result:


Subtask #7:

score: 0
Skipped

Dependency #4:

0%