QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#481672#8831. Chemistry Classucup-team4361WA 65ms7884kbC++201.8kb2024-07-17 12:44:162024-07-17 12:44:17

Judging History

你现在查看的是最新测评结果

  • [2024-07-17 12:44:17]
  • 评测
  • 测评结果:WA
  • 用时:65ms
  • 内存:7884kb
  • [2024-07-17 12:44:16]
  • 提交

answer

#include <bits/stdc++.h>

using std::vector, std::array, std::string;
using std::set, std::map, std::multiset;
using std::min, std::max, std::swap;
using std::pair, std::tuple;
using std::tie;
using std::abs, std::sin, std::cos, std::tan, std::asin, std::acos, std::atan2;
using std::cin, std::cout;

template <class T> using Vec = vector<T>;
template <class T> using Opt = std::optional<T>;

using i32 = int32_t;
using i64 = int64_t;
using u32 = uint32_t;
using u64 = uint64_t;
using u128 = __uint128_t;

std::mt19937_64 mt(std::chrono::steady_clock::now().time_since_epoch().count());

int solve(int N, i64 A, i64 B, const Vec<i64>& S) {
	for (int i = 0; i < N; i++) {
		if (S[2*i+1] - S[2*i] > A) {
			return -1;
		}
	}

	int cur_dp = 0;
	int pref_cnt = 0;
	int first_pairable = 0;

	auto q = Vec<pair<int, int>>{{0, cur_dp - 0}};
	q.reserve(N+1);
	decltype(q)::const_iterator fr = q.begin();

	for (int i = 0; i < N; i++) {
		int nxt_dp = cur_dp + int(S[2*i+1] - S[2*i] <= B);

		if (i > 0 && S[2*i] - S[2*i-1] <= B) {
			pref_cnt++;
		}
		// unsafe but whatever
		while (S[2*i+1] - S[2*first_pairable] > A) {
			first_pairable++;
		}
		while (fr->first < first_pairable) {
			fr = next(fr);
		}
		nxt_dp = max(nxt_dp, fr->second + pref_cnt);
		// dp[i+1] is now computed correctly

		cur_dp = std::move(nxt_dp);
		if (i+1 < N) {
			// must subtract away the contribution of (2*i+1, 2*i+2)
			int sub = pref_cnt + int(S[2*i+2] - S[2*i+1] <= B);
			q.emplace_back(i+1, cur_dp - sub);
		}
	}
	return cur_dp;
}

int main() {
	std::ios_base::sync_with_stdio(false);
	cin.tie(nullptr);

	int T;
	cin >> T;
	while (T--) {
		int N;
		i64 A, B;
		cin >> N >> A >> B;
		auto S = Vec<i64>(2*N);
		for (auto& s : S) {
			cin >> s;
		}
		std::ranges::sort(S);

		cout << solve(N, A, B, S) << '\n';
	}

	return 0;
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3616kb

input:

4
1 2 1
42 69
2 3 1
1 2 3 4
2 5 1
6 1 3 4
5 19 1
1 7 8 9 10 11 12 13 14 20

output:

-1
2
1
4

result:

ok 4 number(s): "-1 2 1 4"

Test #2:

score: 0
Accepted
time: 64ms
memory: 7868kb

input:

1
199996 67013419502794 1
403716252634677166 895717933735068492 410002430455111886 844431179242134559 322988383133810700 133475121268220299 481706326769800263 606871141911985391 195911124687409946 959578180866483093 930547702157856949 877914383714875160 994158366044742636 890855755285236186 69498488...

output:

0

result:

ok 1 number(s): "0"

Test #3:

score: 0
Accepted
time: 65ms
memory: 7804kb

input:

1
199998 38987266278826 1
974183459404323858 517476981059568123 730207399881008603 532509909948600146 89227878552241675 16653300445469756 791674368913652595 92177901403222015 980536748304824579 581564387828767376 471919726893404451 759601909683722004 632340812998214017 818440789777778368 18845836031...

output:

0

result:

ok 1 number(s): "0"

Test #4:

score: 0
Accepted
time: 65ms
memory: 7884kb

input:

1
199996 54170919220045 1
968843690955781467 596307347951820347 406785475849275444 383666938223357986 725160735782817082 132577412512120631 891899794864087098 779434145671998619 932681297277907326 208765550447928461 385078857912267975 669360937040314510 917331948890514855 505938744714587815 47145437...

output:

0

result:

ok 1 number(s): "0"

Test #5:

score: 0
Accepted
time: 63ms
memory: 7820kb

input:

1
199998 35667463938291 8255384928693
770468016026697053 519790816750772730 110085058423772871 85144239858008037 782003096084947976 938498644167289660 693768718229582367 242186248813489674 155335549252315364 428982852761422230 890445026369869037 86401573937739054 9122788624365829 63351367715811463 1...

output:

193326

result:

ok 1 number(s): "193326"

Test #6:

score: 0
Accepted
time: 62ms
memory: 6380kb

input:

1
199998 30382921668955 14233448082254
963132297376532181 199422464083525159 322744997549904069 484222268324755182 911994852231141516 486452603601138945 442934186247306449 697067018736912231 391585717434570522 682442472054944522 79264788486972294 313368204441969076 399649435615099454 810055146752799...

output:

-1

result:

ok 1 number(s): "-1"

Test #7:

score: 0
Accepted
time: 60ms
memory: 7868kb

input:

1
200000 47927923462269 1
24665586551853470 302052529263706283 210309971053691602 263076256179345770 857799427692929388 314900213613059794 225906274300855842 877882541418616003 513956968201013413 567629150391542269 663560657201049943 575042209033964444 387676442637519091 186961317429366344 950630734...

output:

0

result:

ok 1 number(s): "0"

Test #8:

score: 0
Accepted
time: 56ms
memory: 7832kb

input:

1
199998 61818605050169 1
165409158781561806 460583142448212326 912671218554176848 626926695695102006 33152959806830617 136688663029016820 174877457605065935 419306800362435196 89763241467680808 834116262786866128 830483250820731866 942265949775152349 147293754228427769 117586183977037844 8168200855...

output:

0

result:

ok 1 number(s): "0"

Test #9:

score: 0
Accepted
time: 64ms
memory: 7836kb

input:

1
199996 34451027260033 1
601283108326080907 366774999584049325 421906214352697372 955853417529868631 15724846216041399 237313052425127959 21985568950819605 990795326302503510 838020773207917956 327286028784534617 668754577944547269 293491049615758976 560132287154617049 178505332245992034 5559649986...

output:

0

result:

ok 1 number(s): "0"

Test #10:

score: 0
Accepted
time: 62ms
memory: 6216kb

input:

1
200000 29187534610932 21950129578571
825099255469982093 186387713027671861 686187988858020000 84398649936510585 404799755268793918 343938261224617536 835021326555656778 414012550526058150 473262296466867769 949711165249895614 876342183912676727 446476677785448323 965973178373470399 211396195851941...

output:

-1

result:

ok 1 number(s): "-1"

Test #11:

score: 0
Accepted
time: 64ms
memory: 7860kb

input:

1
199997 29405605609626 28289738816956
142397526262523706 376764932667952907 458596335650559615 309998508007705361 216906502123233296 997270308488922036 627624046717378857 795390956936077907 455041452649155630 507550903995090795 945772023366794554 886164928026658833 740664590169344757 46022396065308...

output:

199994

result:

ok 1 number(s): "199994"

Test #12:

score: 0
Accepted
time: 63ms
memory: 6788kb

input:

2
53064 111726463850469 1
699764699097067744 693901341124789557 936192127198912674 471397237345629646 57339338518673020 330275460175741176 277844690417194078 346832037195479397 384194477578957186 369530931475729901 783437009257722751 33766787198435970 978743274657154020 728022680382638786 5965748201...

output:

0
0

result:

ok 2 number(s): "0 0"

Test #13:

score: 0
Accepted
time: 62ms
memory: 5264kb

input:

2
86135 126532043457301 1
364939525549488923 331763991963030652 418052566503935602 389200327527950996 223248088765571340 970673647394107710 177103079343576000 220542474217521377 476655819805831981 120317505540454685 584876353613658645 288615905048789050 834361798578942808 23913094970065630 598267059...

output:

0
-1

result:

ok 2 number(s): "0 -1"

Test #14:

score: 0
Accepted
time: 63ms
memory: 5544kb

input:

2
114819 48359228554241 10435302888019
586220278501534443 917827003963097280 562493926325895741 832147339756103774 598789207580673171 30092248715925739 347809122759281987 202961279549277103 26954992614204788 25477890176628825 346240213874791872 935701273590132621 71601416863439116 479976624236884522...

output:

-1
0

result:

ok 2 number(s): "-1 0"

Test #15:

score: 0
Accepted
time: 63ms
memory: 6868kb

input:

2
51745 111115340822721 67934189093410
384004880823650955 20652869941206454 26030297877284505 821820399879575511 900797542879150986 113731242713200216 47022016133737251 798091939356579944 575761259879993980 235315676307469976 172626135747552411 68486068556761355 143910280723620693 60416335438738505 ...

output:

-1
0

result:

ok 2 number(s): "-1 0"

Test #16:

score: 0
Accepted
time: 61ms
memory: 7620kb

input:

2
190655 32089277245186 8619506756687
313636925686617358 451870071979062091 411410323530866491 42956509195506881 447630393674009199 863508035447235453 663740029365028281 533764538570605616 118940275907220185 357308383149237232 441049621449710395 628997155353158776 456432601746051845 8106593168377557...

output:

184083
0

result:

ok 2 number(s): "184083 0"

Test #17:

score: 0
Accepted
time: 60ms
memory: 6856kb

input:

2
50532 206411131207619 1
453908124405692621 462920221744679551 907904756011625936 804821632576418749 93827569616941358 347241015327075451 978208201750742171 834609018152621638 156944026871472980 64996958207346140 686366260594642120 60180419344299670 537873530382922992 170176388394850771 11620871464...

output:

0
0

result:

ok 2 number(s): "0 0"

Test #18:

score: 0
Accepted
time: 59ms
memory: 7012kb

input:

2
48027 120333836960902 1
852731212005209062 641038431282260037 132561713080121959 515369396104032663 719674677958440509 741065267915488017 553188748023480256 631336662948494092 798673521178051212 679314267048932576 944841943701558860 246944235871057242 683112447413388693 475259445129027810 49561621...

output:

0
0

result:

ok 2 number(s): "0 0"

Test #19:

score: 0
Accepted
time: 61ms
memory: 6888kb

input:

2
49149 133285178828754 105395736842425
438730385021926980 353033516195378113 865739746654163321 972190999200412752 103121252277512423 577854906237340101 262738086768730076 380264274946279046 722511171929958464 585388238516141847 65515930476041145 313519865726265646 246858768321542001 31329176568173...

output:

49147
0

result:

ok 2 number(s): "49147 0"

Test #20:

score: 0
Accepted
time: 55ms
memory: 5928kb

input:

2
105395 50078986120418 18340876167195
648281937820433438 261947326564873806 775340723472059206 981294028978258400 672505076534685403 990701863188209735 207121965067693435 577082535084598175 794678100710086611 898694599371396646 463216957702075620 838570651670974795 704470538205573475 77188600378328...

output:

103210
0

result:

ok 2 number(s): "103210 0"

Test #21:

score: -100
Wrong Answer
time: 55ms
memory: 5788kb

input:

2
114532 59348716065946 1
707073926414028020 135039593178301019 936998353144615963 40817963650509678 955840054722887195 637578262041488114 125838856862796599 218263162301917006 702908832064280815 794836944698592827 931716823608350305 381880133001558860 777892097619024781 549655402210414561 907951636...

output:

0
63485

result:

wrong answer 2nd numbers differ - expected: '66074', found: '63485'