QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#835243#8012. Jumping LightsRadewoosh#AC ✓1028ms218616kbC++238.7kb2024-12-28 10:41:122024-12-28 10:41:18

Judging History

This is the latest submission verdict.

  • [2024-12-28 10:41:18]
  • Judged
  • Verdict: AC
  • Time: 1028ms
  • Memory: 218616kb
  • [2024-12-28 10:41:12]
  • Submitted

answer

//~ while (clock()<=69*CLOCKS_PER_SEC)
//~ #pragma comment(linker, "/stack:200000000")
#pragma GCC optimize("O3")
//~ #pragma GCC target ("avx2")
//~ #pragma GCC optimize("Ofast")
//~ #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
//~ #pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace __gnu_pbds;
using namespace std;

template <typename T>
using ordered_set =
    tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

#define sim template < class c
#define ris return * this
#define dor > debug & operator <<
#define eni(x) sim > typename \
  enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {
sim > struct rge { c b, e; };
sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }
sim > auto dud(c* x) -> decltype(cerr << *x, 0);
sim > char dud(...);
struct debug {
#ifdef LOCAL
~debug() { cerr << endl; }
eni(!=) cerr << boolalpha << i; ris; }
eni(==) ris << range(begin(i), end(i)); }
sim, class b dor(pair < b, c > d) {
  ris << "(" << d.first << ", " << d.second << ")";
}
sim dor(rge<c> d) {
  *this << "[";
  for (auto it = d.b; it != d.e; ++it)
    *this << ", " + 2 * (it == d.b) << *it;
  ris << "]";
}
#else
sim dor(const c&) { ris; }
#endif
};
#define imie(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "

#define shandom_ruffle random_shuffle

using ll=long long;
using pii=pair<int,int>;
using pll=pair<ll,ll>;
using vi=vector<int>;
using vll=vector<ll>;
const int nax=300*1007;

int n, q;

int ojc[nax];
vi graf[nax];

int parz[nax];

int ile[2][2];
int stan;

int czyl[nax];

int ost[2][nax];

struct trzymacz
{
	int kt=0;
	int ichparz=0;
	vector<set<int>> poj;
	trzymacz()
	{
		poj.resize(2);
	}
	trzymacz(int a, int b)
	{
		poj.resize(2);
		kt=a;
		ichparz=b;
	}
	void dorzuc_nie(int v)
	{
		poj[0].insert(v);
	}
	void dorzuc_tak(int v)
	{
		ile[kt][ichparz]++;
		poj[1].insert(v);
	}
	void zamien_wszystko()
	{
		ile[kt][ichparz]-=(int)poj[1].size();
		poj[0].swap(poj[1]);
		ile[kt][ichparz]+=(int)poj[1].size();
	}
	int stan(int v)
	{
		return poj[1].count(v);
	}
	void flipnij(int v)
	{
		int x=stan(v);
		if (x)
			ile[kt][ichparz]--;
		else
			ile[kt][ichparz]++;
		poj[x].erase(v);
		poj[x^1].insert(v);
	}
	void wszystko_nie()
	{
		if ((int)poj[1].size()>(int)poj[0].size())
			zamien_wszystko();
		for (int i : poj[1])
			poj[0].insert(i);
		ile[kt][ichparz]-=(int)poj[1].size();
		poj[1].clear();
	}
	void wszystko_tak()
	{
		wszystko_nie();
		zamien_wszystko();
	}
	int cokolwiek()
	{
		return !poj[1].empty();
	}
};

trzymacz trzymacze[2][nax];

struct pojemnik
{
	int num;
	//~ vector<vector<pii>> wek;
	set<pii> setel;
	pojemnik()
	{
		
	}
	pojemnik(int nn)
	{
		num=nn;
		//~ wek.resize(2);
	}
	void insert(pii v)
	{
		setel.insert(v);
	}
	void erase(pii v)
	{
		setel.erase(v);
	}
	int empty()
	{
		return setel.empty();
	}
	vi lista()
	{
		vi ret;
		for (pii i : setel)
			ret.push_back(i.second);
		return ret;
	}
	pii daj()
	{
		return *setel.begin();
	}
	//~ void insert(pii v)
	//~ {
		//~ ost[num][v.second]++;
		//~ wek[v.first].push_back({ost[num][v.second], v.second});
	//~ }
	//~ int empty()
	//~ {
		//~ for (int i=0; i<2; i++)
			//~ while(!wek[i].empty() && wek[i].back().first!=ost[num][wek[i].back().second])
				//~ wek[i].pop_back();
		//~ return wek[0].empty() && wek[1].empty();
	//~ }
	//~ pii daj()
	//~ {
		//~ empty();
		//~ for (int i=0; i<2; i++)
			//~ if (!wek[i].empty())
				//~ return {i, wek[i].back().second};
		//~ assert(0);
	//~ }
	//~ int empty1()
	//~ {
		//~ empty();
		//~ return wek[1].empty();
	//~ }
	//~ pii daj1()
	//~ {
		//~ empty();
		//~ if (!wek[1].empty())
			//~ return {1, wek[1].back().second};
		//~ assert(0);
	//~ }
	//~ vi lista()
	//~ {
		//~ vi ret;
		//~ for (int i=0; i<2; i++)
		//~ {
			//~ while(!wek[i].empty())
			//~ {
				//~ if (wek[i].back().first==ost[num][wek[i].back().second])
					//~ ret.push_back(wek[i].back().second);
				//~ wek[i].pop_back();
			//~ }
		//~ }
		//~ return ret;
	//~ }
};

//~ set<pii> zazdz[2][nax];
//~ set<pii> niedz[2][nax];

pojemnik zazdz[2][nax];
pojemnik niedz[2][nax];

int zazn[2][nax];

vi swieze[2];

void dfs1(int v)
{
	for (int &i : graf[v])
	{
		if (i==ojc[v])
		{
			swap(i, graf[v].back());
			graf[v].pop_back();
			break;
		}
	}
	for (int i : graf[v])
	{
		ojc[i]=v;
		parz[i]=parz[v]^1;
		dfs1(i);
	}
}

int wynik()
{
	return ile[0][stan]+ile[1][stan^1];
}

void flip(int kt, int v)
{
	//~ debug() << "flipuje " << imie(kt) << imie(v);
	if (zazn[kt][v])
	{
		//~ trzymacze[kt][v].wszystko_nie();
		ile[kt][parz[v]]--;
		zazn[kt][v]=0;
		if (v>1)
		{
			//~ iledz[kt][ojc[v]]--;
			zazdz[kt][ojc[v]].erase({!czyl[v], v});
			niedz[kt][ojc[v]].insert({!czyl[v], v});
		}
	}
	else
	{
		//~ trzymacze[kt][v].wszystko_tak();
		ile[kt][parz[v]]++;
		zazn[kt][v]=1;
		if (v>1)
		{
			//~ iledz[kt][ojc[v]]++;
			zazdz[kt][ojc[v]].insert({!czyl[v], v});
			niedz[kt][ojc[v]].erase({!czyl[v], v});
		}
	}
}

int isfake(int kt, int v)
{
	return zazn[kt][v] && parz[v]!=(stan^kt) && !zazn[kt][ojc[v]] && zazdz[kt][v].empty() && !trzymacze[kt][v].cokolwiek();
}

vi dod, pom;

int ostczy[nax];
int czasczy;

void przeczysc(vi &wek)
{
	czasczy++;
	vi pom;
	for (int i : wek)
	{
		if (ostczy[i]!=czasczy)
		{
			ostczy[i]=czasczy;
			pom.push_back(i);
		}
	}
	
	pom.swap(wek);
}

void rozszerz(int kt)//najpierw usun spojne rozmiaru jeden zlej parzystosci
{
	dod.clear();
	pom.clear();
	pom.swap(swieze[kt]);
	
	przeczysc(pom);
	
	for (int i : pom)
	{
		if (parz[i]!=(stan^kt))
		{
			if (isfake(kt, i))
				flip(kt, i);
			if (zazn[kt][i])
				swieze[kt].push_back(i);
		}
		else
		{
			if (!zazn[kt][i])
			{
				if (i>1 && isfake(kt, ojc[i]))
					flip(kt, ojc[i]);
				if (i>1 && !isfake(kt, ojc[i]) && zazn[kt][ojc[i]])
					swieze[kt].push_back(i);
				while(1)
				{
					if (zazdz[kt][i].empty())
						break;
					int d=zazdz[kt][i].daj().second;
					if (!isfake(kt, d))
					{
						swieze[kt].push_back(i);
						break;
					}
					flip(kt, d);
				}
				
				trzymacze[kt][i].wszystko_nie();
			}
		}
	}
	
	for (int i : pom)
	{
		//~ debug() << imie(i) << imie(zazn[kt][i]) << imie(parz[i]==(stan^kt));
		if (!zazn[kt][i] && parz[i]!=(kt^stan))//zaraza sie
		{
			if ((i>1 && zazn[kt][ojc[i]]) || !zazdz[kt][i].empty() || trzymacze[kt][i].cokolwiek())
				dod.push_back(i);
			continue;
		}
		if (zazn[kt][i] && parz[i]==(kt^stan))//zaraza somsiadow
		{
			if (i>1 && !zazn[kt][ojc[i]])
				dod.push_back(ojc[i]);
			for (int j : niedz[kt][i].lista())
				dod.push_back(j);
			trzymacze[kt][i].wszystko_tak();
			continue;
		}
		//~ swieze[kt].push_back(i);
	}
	
	for (int i : dod)
	{
		if (!zazn[kt][i])
		{
			flip(kt, i);
			swieze[kt].push_back(i);
			trzymacze[kt][i].wszystko_tak();
		}
	}
	
}

int main()
{
	scanf("%d%d", &n, &q);
	for (int i=1; i<n; i++)
	{
		int a, b;
		scanf("%d%d", &a, &b);
		graf[a].push_back(b);
		graf[b].push_back(a);
	}
	for (int i=2; i<=n; i++)
		czyl[i]=(((int)graf[i].size())==1);
	
	dfs1(1);
	
	for (int h=0; h<2; h++)
	{
		for (int i=1; i<=n; i++)
		{
			niedz[h][i]=pojemnik(h);
			zazdz[h][i]=pojemnik(h);
		}
		for (int i=1; i<=n; i++)
		{
			trzymacze[h][i]=trzymacz(h, parz[i]^1);
		}
	}
	
	for (int h=0; h<2; h++)
	{
		for (int i=2; i<=n; i++)
		{
			if (!czyl[i])
				niedz[h][ojc[i]].insert({!czyl[i], i});
		}
		for (int i=2; i<=n; i++)
		{
			if (czyl[i])
			{
				if (0 && niedz[h][ojc[i]].empty())
				{
					czyl[i]=0;
					niedz[h][ojc[i]].insert({!czyl[i], i});
				}
				else
				{
					trzymacze[h][ojc[i]].dorzuc_nie(i);
				}
			}
		}
	}
	while(q--)
	{
		int typ;
		scanf("%d", &typ);
		if (typ<=1)
		{
			int v;
			scanf("%d", &v);
			
			for (int i=0; i<2; i++)
			{
				if (parz[v]!=(stan^i))
					continue;
				
				if (czyl[v])
				{
					if (trzymacze[i][ojc[v]].stan(v)!=typ)
					{
						trzymacze[i][ojc[v]].flipnij(v);
						swieze[i].push_back(ojc[v]);
					}
				}
				else
				{
					if (zazn[i][v]!=typ)
					{
						flip(i, v);
						swieze[i].push_back(v);
					}
				}
			}
		}
		if (typ==2)
		{
			rozszerz(0);
			rozszerz(1);
			stan^=1;
		}
		printf("%d ", wynik());
		//~ debug();
		//~ debug() << range(zazn[0]+1, zazn[0]+1+n);
		//~ debug() << range(zazn[1]+1, zazn[1]+1+n);
		//~ debug() << imie(swieze[0]) << imie(swieze[1]);
		//~ debug();
	}
	printf("\n");
	return 0;
}

这程序好像有点Bug,我给组数据试试?

詳細信息

Test #1:

score: 100
Accepted
time: 32ms
memory: 157916kb

input:

8 8
1 2
2 3
2 4
1 5
5 6
5 7
5 8
1 1
2
2
0 1
0 3
0 4
0 5
2

output:

1 2 6 5 4 3 3 1 

result:

ok 8 numbers

Test #2:

score: 0
Accepted
time: 18ms
memory: 157924kb

input:

4 5
1 2
1 3
2 4
1 2
2
0 4
2
2

output:

1 2 1 2 2 

result:

ok 5 number(s): "1 2 1 2 2"

Test #3:

score: 0
Accepted
time: 23ms
memory: 158164kb

input:

1000 1000
471 906
653 752
346 148
764 837
22 863
416 906
836 863
784 752
694 346
918 635
963 863
152 863
221 342
473 752
250 635
323 643
102 643
944 833
262 752
185 150
82 342
142 342
383 635
1000 342
30 752
713 837
513 635
12 150
181 346
138 752
661 150
435 342
246 150
387 643
561 635
41 833
797 34...

output:

1 1 2 115 114 118 117 103 102 306 305 396 395 604 603 497 496 810 809 692 691 908 907 695 694 907 906 599 598 906 905 493 492 905 904 492 491 904 903 395 394 903 902 394 393 805 804 393 392 710 709 392 391 709 708 390 389 611 610 389 388 498 497 387 386 402 401 386 385 401 400 298 297 400 399 297 29...

result:

ok 1000 numbers

Test #4:

score: 0
Accepted
time: 35ms
memory: 160440kb

input:

1000 1000
471 906
653 752
346 148
764 837
22 863
416 906
836 863
784 752
694 346
918 635
963 863
152 863
221 342
473 752
250 635
323 643
102 643
944 833
262 752
185 150
82 342
142 342
383 635
1000 342
30 752
713 837
513 635
12 150
181 346
138 752
661 150
435 342
246 150
387 643
561 635
41 833
797 34...

output:

1 2 3 4 4 5 5 501 14 14 15 15 804 804 804 804 803 802 296 296 296 296 296 296 296 907 906 905 904 904 904 904 903 902 903 694 693 693 1000 1000 1000 1000 999 1000 1000 1000 1000 1000 1000 999 998 998 998 1000 1000 1000 1000 1000 1000 999 999 999 999 998 998 997 997 996 1000 1000 1000 1000 1000 1000 ...

result:

ok 1000 numbers

Test #5:

score: 0
Accepted
time: 35ms
memory: 158144kb

input:

1000 1000
381 447
194 664
14 628
379 159
314 696
462 431
288 881
94 715
841 505
356 729
973 447
605 433
370 664
733 785
591 779
961 35
770 294
723 580
924 431
472 606
315 858
612 526
538 638
562 890
241 686
717 611
673 937
25 81
342 269
132 159
97 418
647 58
552 930
962 858
996 219
155 219
446 18
96...

output:

1 1 2 3 2 26 25 71 70 86 85 139 138 143 142 187 186 203 202 265 264 269 268 291 290 334 333 357 356 401 400 426 425 469 468 491 490 535 534 560 559 609 608 625 624 675 674 691 690 736 735 748 747 791 790 817 816 857 856 874 873 924 923 949 948 965 964 954 953 964 963 953 952 946 945 951 950 945 944 ...

result:

ok 1000 numbers

Test #6:

score: 0
Accepted
time: 24ms
memory: 158444kb

input:

1000 1000
152 814
899 864
941 247
562 592
569 194
367 804
691 200
873 445
399 723
487 561
496 194
140 445
840 864
520 445
797 299
601 137
900 561
156 539
580 569
517 851
207 261
891 733
794 299
971 299
216 539
385 613
591 194
602 756
860 569
549 872
543 592
17 191
712 481
150 567
634 884
119 125
731...

output:

1 2 3 4 4 5 6 132 355 354 354 354 539 538 538 539 539 539 637 636 635 635 635 636 636 737 736 735 734 734 734 734 733 733 733 837 836 836 928 928 928 991 990 1000 1000 1000 1000 1000 1000 999 998 998 998 1000 1000 1000 1000 1000 1000 999 999 999 999 998 998 997 997 996 1000 1000 1000 1000 1000 1000 ...

result:

ok 1000 numbers

Test #7:

score: 0
Accepted
time: 24ms
memory: 158464kb

input:

1000 1000
758 194
685 422
288 113
326 351
995 894
493 380
114 487
45 240
280 401
154 801
929 606
113 160
966 275
698 374
833 709
873 936
714 651
536 710
387 699
798 508
678 300
250 194
53 195
453 247
777 552
648 257
223 885
386 711
963 762
277 985
157 238
503 780
910 123
1 272
452 500
619 656
956 29...

output:

1 2 3 4 4 5 9 38 19 19 20 20 49 49 50 51 51 51 55 55 55 55 56 57 58 90 90 90 90 91 92 93 93 93 94 85 85 86 154 155 156 118 118 189 163 164 165 223 214 213 213 214 215 258 259 277 294 295 296 296 297 298 299 299 299 299 300 300 322 343 363 364 400 404 404 403 454 473 473 472 473 484 485 485 484 503 5...

result:

ok 1000 numbers

Test #8:

score: 0
Accepted
time: 32ms
memory: 158172kb

input:

1000 1000
82 12
214 985
154 2
565 243
46 685
542 799
419 269
164 111
723 131
542 181
286 762
691 830
189 909
175 720
325 544
586 357
487 899
727 785
988 284
892 717
841 129
767 512
952 162
313 25
714 226
706 507
621 597
127 574
587 457
107 65
24 667
973 801
910 49
429 559
875 45
868 737
914 359
616 ...

output:

1 2 3 4 4 5 11 22 35 35 36 36 72 72 73 73 73 73 117 116 116 116 117 118 119 205 205 204 203 204 205 206 206 206 207 304 303 304 428 428 429 586 585 729 829 829 829 898 956 955 954 954 955 982 982 994 999 999 999 998 998 998 998 997 997 996 996 995 998 1000 1000 1000 1000 1000 999 998 1000 1000 999 9...

result:

ok 1000 numbers

Test #9:

score: 0
Accepted
time: 33ms
memory: 160200kb

input:

1000 1000
82 12
214 985
154 2
565 243
46 685
542 799
419 269
164 111
723 131
542 181
286 762
691 830
189 909
175 720
325 544
586 357
487 899
727 785
988 284
892 717
841 129
767 512
952 162
313 25
714 226
706 507
621 597
127 574
587 457
107 65
24 667
973 801
910 49
429 559
875 45
868 737
914 359
616 ...

output:

1 1 2 4 3 6 5 6 5 9 8 16 15 26 25 39 38 47 46 60 59 86 85 112 111 153 152 229 228 341 340 452 451 567 566 680 679 810 809 905 904 949 948 975 974 991 990 997 996 998 997 1000 999 998 997 1000 999 998 997 1000 999 998 997 999 998 1000 999 999 998 999 998 998 997 999 998 998 997 998 997 998 997 998 99...

result:

ok 1000 numbers

Test #10:

score: 0
Accepted
time: 486ms
memory: 208296kb

input:

300000 1000000
97326 76454
9201 59099
18094 236352
84776 238940
199531 76454
9597 245969
271653 59099
238809 76454
211072 240150
240324 59099
230003 214953
174810 236352
241076 245969
182508 236352
243967 238940
265389 238940
85806 214953
67883 59099
116683 240150
213036 245969
245555 256624
54761 2...

output:

1 1 2 30037 30036 30039 30038 29866 29865 59901 59900 7 6 59903 59902 29817 29816 119829 119828 90006 90005 239884 239883 210295 210294 299995 299994 210294 210293 269879 269878 210293 210292 269878 269877 180225 180224 269877 269876 180224 180223 239987 239986 180223 180222 210157 210156 180222 180...

result:

ok 1000000 numbers

Test #11:

score: 0
Accepted
time: 466ms
memory: 207212kb

input:

300000 1000000
91654 174569
138099 174569
264490 22195
222420 6874
32625 13337
52307 13337
4094 13337
278200 22195
103901 22195
220528 231167
120791 22195
114379 174569
163168 6874
165284 13337
96771 246409
117460 13337
216333 174569
61233 13337
184005 174569
11471 246409
146450 231167
106444 157213...

output:

1 1 2 43059 43058 85887 85886 85672 85671 128787 128786 128541 128540 171392 171391 214100 214099 214286 214285 171277 171276 214285 214284 171276 171275 171622 171621 128382 128381 171621 171620 128380 171620 171619 128380 128379 128563 128562 85552 85551 85721 85720 42667 42666 85720 85719 42666 4...

result:

ok 1000000 numbers

Test #12:

score: 0
Accepted
time: 927ms
memory: 206696kb

input:

300000 1000000
97326 76454
9201 59099
18094 236352
84776 238940
199531 76454
9597 245969
271653 59099
238809 76454
211072 240150
240324 59099
230003 214953
174810 236352
241076 245969
182508 236352
243967 238940
265389 238940
85806 214953
67883 59099
116683 240150
213036 245969
245555 256624
54761 2...

output:

0 1 2 2 2 2 3 3 90144 90144 90145 8 149823 149823 89992 89993 179893 179892 149970 149969 149969 149970 149970 149971 149972 179897 179898 179898 179899 179898 179898 240121 240121 239620 240124 269884 269884 269883 269883 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 299999 ...

result:

ok 1000000 numbers

Test #13:

score: 0
Accepted
time: 550ms
memory: 210256kb

input:

300000 1000000
248712 249673
298418 27239
247288 250649
136168 170123
120827 120572
166437 96380
29997 78148
266089 229012
39229 154977
272538 213500
226372 135046
55342 101397
41140 10381
162538 185225
75570 32457
150922 282387
221487 249601
287761 70070
126364 169484
217490 27239
11212 117800
1337...

output:

1 1 2 381 380 408 407 9742 9741 20577 20576 25432 25431 36510 36509 45328 45327 56281 56280 63664 63663 72739 72738 81915 81914 94979 94978 102118 102117 112913 112912 124179 124178 138149 138148 145266 145265 158853 158852 165482 165481 175618 175617 182294 182293 197349 197348 203050 203049 216785...

result:

ok 1000000 numbers

Test #14:

score: 0
Accepted
time: 1028ms
memory: 209920kb

input:

300000 1000000
94458 100694
200062 90080
112716 72672
7996 111941
29446 144319
57625 116416
180367 186169
286758 211019
39090 55935
295816 54419
196920 55935
223191 70401
32605 195621
5313 62801
52936 131023
146890 278121
223842 240081
145409 49732
149061 103161
182076 267859
173025 111941
268330 90...

output:

0 1 2 2 2 2 3 3 20136 20137 20138 60355 105008 105008 159962 159962 200202 200201 230182 230181 230181 230181 230181 230181 230182 240171 240171 240170 240170 240169 240169 260211 260210 270115 280169 285171 285171 285170 285170 295030 300000 300000 300000 300000 300000 300000 300000 300000 300000 2...

result:

ok 1000000 numbers

Test #15:

score: 0
Accepted
time: 915ms
memory: 218616kb

input:

300000 1000000
136970 245496
293212 102699
263113 20240
95167 64835
207195 138838
232887 223844
21257 263770
95648 194944
4985 179872
164072 179872
202264 22949
215654 245496
253505 231530
118806 212946
223006 116563
288415 241517
191381 247514
211336 275167
134767 278940
284617 75954
187585 287088
...

output:

0 1 2 2 2 2 3 4 19756 19756 19757 11 29833 29833 19 20 29843 29843 30 30 30 31 32 33 34 29861 29862 29862 29863 29863 29864 57 57 40007 81 40031 40032 40032 40033 109 40061 40062 139 140 40094 172 173 174 175 175 40131 10047 40169 10085 40207 10123 10124 40247 10164 40287 10204 10204 10205 40328 403...

result:

ok 1000000 numbers

Test #16:

score: 0
Accepted
time: 868ms
memory: 209580kb

input:

300000 1000000
116861 180653
303 109772
131816 254426
207606 239169
53230 154230
62850 116003
199973 139032
163573 123616
170861 32859
52721 203397
157003 154661
13835 200338
174610 64392
165789 251689
3512 110822
271929 242623
281001 268119
254347 20293
152850 127012
183187 112661
146147 48428
9527...

output:

0 1 2 2 2 2 3 8 19 20 21 54 96 96 178 179 320 320 610 610 610 611 612 613 614 1101 1102 1102 1103 1103 1104 2137 2137 4116 7970 14562 14563 14563 14564 25420 41101 41102 61704 61704 86896 115770 115771 115772 115772 115772 146787 178374 207175 232618 253574 269184 269184 280593 288288 293201 296109 ...

result:

ok 1000000 numbers

Test #17:

score: 0
Accepted
time: 688ms
memory: 209292kb

input:

300000 1000000
116861 180653
303 109772
131816 254426
207606 239169
53230 154230
62850 116003
199973 139032
163573 123616
170861 32859
52721 203397
157003 154661
13835 200338
174610 64392
165789 251689
3512 110822
271929 242623
281001 268119
254347 20293
152850 127012
183187 112661
146147 48428
9527...

output:

1 1 2 3 2 4 3 4 3 8 7 12 11 16 15 27 26 36 35 45 44 63 62 73 72 81 80 92 91 108 107 134 133 172 171 238 237 338 337 447 446 597 596 825 824 1095 1094 1427 1426 1794 1793 2167 2166 2572 2571 3259 3258 4645 4644 7453 7452 12506 12505 20779 20778 32935 32934 50165 50164 73422 73421 102558 102557 136384...

result:

ok 1000000 numbers

Test #18:

score: 0
Accepted
time: 821ms
memory: 209820kb

input:

300000 1000000
69262 231650
40675 216140
136290 200471
161446 28700
98925 199562
124901 154967
102288 127760
184062 237357
7525 166502
232047 105097
250416 218653
254190 117476
69835 237357
157425 237357
153663 187691
174243 153276
124097 97388
295743 237357
1524 109826
123590 224805
46083 237357
26...

output:

1 1 2 4 3 37478 37477 112922 112921 174279 174278 262649 262648 286267 286266 299996 299995 286266 286265 299995 299994 286265 286264 299990 299989 286264 286263 299986 299985 286263 286262 299984 299983 286262 286261 299983 299982 286261 286260 299982 299981 286260 286259 299981 299980 286259 28625...

result:

ok 1000000 numbers

Test #19:

score: 0
Accepted
time: 881ms
memory: 208244kb

input:

300000 1000000
69262 231650
40675 216140
136290 200471
161446 28700
98925 199562
124901 154967
102288 127760
184062 237357
7525 166502
232047 105097
250416 218653
254190 117476
69835 237357
157425 237357
153663 187691
174243 153276
124097 97388
295743 237357
1524 109826
123590 224805
46083 237357
26...

output:

1 2 37771 37772 37773 187649 300000 300000 299999 299998 299997 286267 299999 300000 299999 299998 299997 286225 299999 300000 299999 299998 299997 286267 299999 300000 299999 299998 299997 286315 299999 300000 299999 299998 299997 286225 299999 300000 299999 299998 299997 286315 299999 300000 29999...

result:

ok 1000000 numbers

Test #20:

score: 0
Accepted
time: 934ms
memory: 209552kb

input:

300000 1000000
249631 208918
150066 5417
194840 27822
273663 30917
42051 266
75196 221537
207519 280775
263232 121172
251044 30917
150517 391
271526 121172
291830 121172
195016 173181
38053 27822
170886 299233
196992 158037
95708 127691
40970 88108
191754 241461
185680 40929
18459 148260
52410 27605...

output:

1 2 16847 16848 16849 67364 117549 166873 166872 166871 166870 214614 266900 300000 299999 299998 299997 299996 299995 297816 299997 300000 299999 299998 299997 299996 299995 297783 299997 300000 299999 299998 299997 299996 297727 299998 300000 299999 299998 299997 297728 299999 300000 299999 299998...

result:

ok 1000000 numbers

Test #21:

score: 0
Accepted
time: 832ms
memory: 207688kb

input:

300000 1000000
116861 180653
303 109772
131816 254426
207606 239169
53230 154230
62850 116003
199973 139032
163573 123616
170861 32859
52721 203397
157003 154661
13835 200338
174610 64392
165789 251689
3512 110822
271929 242623
281001 268119
254347 20293
152850 127012
183187 112661
146147 48428
9527...

output:

1 2 23 24 25 168 705 2358 2358 2358 6506 15271 15270 15269 31024 54900 54900 54900 54900 54900 54900 54900 86452 122550 159597 159596 159595 159594 194615 224713 248835 248834 248833 248832 267167 279962 288334 288333 288332 288331 288330 288329 288328 293538 296638 298372 298371 298370 299303 29970...

result:

ok 1000000 numbers

Test #22:

score: 0
Accepted
time: 472ms
memory: 205896kb

input:

300000 1000000
61981 40143
210691 40294
94226 115835
30307 98283
278347 205390
72604 253010
258401 276794
176082 227029
89786 262544
72152 253010
224329 98283
63330 253010
22774 299538
86318 262544
145391 174637
4156 262544
233915 213303
240376 98283
29557 262544
95195 54987
78578 40294
172647 13052...

output:

1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 ...

result:

ok 1000000 numbers

Test #23:

score: 0
Accepted
time: 447ms
memory: 205980kb

input:

300000 1000000
116126 94376
37508 268128
66964 161488
97526 170395
120112 141370
33107 155836
53044 163655
242243 155836
281521 123049
192594 246902
254262 182471
224913 4264
239209 170395
290333 237105
129767 153753
280641 260252
131299 163655
102682 170395
190226 268128
19495 163655
42772 132258
1...

output:

1 2 1 1 1 1 2 2 1 1 1 2 1 1 1 2 1 1 1 2 1 1 1 1 2 2 1 1 1 1 2 1 1 1 2 1 1 1 2 1 1 1 2 2 1 1 1 2 1 1 1 2 1 1 1 2 2 1 1 1 2 1 1 1 1 2 1 1 1 2 2 1 1 1 2 2 1 1 1 2 1 1 1 1 2 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1 1 1 2 2 1 1 1 2 1 1 1 2 2 1 1 1 1 2 2 1 1 1 2 2 1 1 1 2 2 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1 1 1 2 1 1 1 ...

result:

ok 1000000 numbers

Extra Test:

score: 0
Extra Test Passed