Submission details
Task:Coders
Sender:multiply and surrender
Submission time:2015-09-30 17:58:39 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.07 sdetails
#2ACCEPTED0.11 sdetails
#3ACCEPTED0.06 sdetails
#4ACCEPTED0.11 sdetails
#5ACCEPTED0.08 sdetails
#6ACCEPTED0.06 sdetails
#7ACCEPTED0.06 sdetails
#8ACCEPTED0.08 sdetails
#9ACCEPTED0.06 sdetails
#10ACCEPTED0.06 sdetails
#11ACCEPTED0.08 sdetails
#12ACCEPTED0.07 sdetails
#13ACCEPTED0.10 sdetails
#14ACCEPTED0.06 sdetails
#15ACCEPTED0.05 sdetails
#16ACCEPTED0.06 sdetails
#17ACCEPTED0.07 sdetails
#18ACCEPTED0.07 sdetails
#19ACCEPTED0.07 sdetails
#20ACCEPTED0.06 sdetails
#21ACCEPTED0.08 sdetails
#22ACCEPTED0.11 sdetails
#23ACCEPTED0.06 sdetails
#24ACCEPTED0.10 sdetails

Code

#include <iostream>
#include <set>
#include <algorithm>

#define ll long long
#define F first
#define S second

using namespace std;

int n,m;
ll c;
pair<int, ll> a[101010];
set<pair<ll, int>> sbeg, slef,srig;

int main() {
	ios_base::sync_with_stdio(0);
	cin >> n >> m >> c;
	for (int i=0;i<n;i++) {
		int q;
		ll s;
		cin >> q >> s;
		a[i] = make_pair(q,s);
	}
	sort(a,a+n);
	ll sum=0;
	for (int i=0;i<(m-1)/2;i++) {
		srig.insert(make_pair(a[n-i-1].S,a[n-i-1].F));
		sum += a[n-i-1].S;
	}
	pair<ll, int> mid = make_pair(a[n-(m+1)/2].S,a[n-(m+1)/2].F);
	sum += a[n-(m+1)/2].S;
	for (int i=0;i<n-(m+1)/2;i++)
		sbeg.insert(make_pair(a[i].S,a[i].F));
	for (int i=0;i<(m-1)/2;i++) {
		pair<ll, int> p = *sbeg.begin();
		sbeg.erase(p);
		slef.insert(p);
		sum += p.F;
	}
	int ind = n-(m+1)/2-1;
	while (sum>c && ind >= 0) {
		auto it = srig.end();
		it--;
		if (mid.F < (*it).F) {
			pair<ll, int> p1 = *it;
			srig.erase(p1);
			sum -= p1.F;
			srig.insert(mid);
		}
		else {
			sum-= mid.F;
		}
		mid = make_pair(a[ind].S,a[ind].F);
		ind--;
		if (sbeg.count(mid)) {
			sbeg.erase(mid);
			sum+=mid.F;
		} else {
			slef.erase(mid);
			if (sbeg.empty()) break;
			pair<ll, int> p2 =  *sbeg.begin();
			sbeg.erase(p2);
			slef.insert(p2);
			sum+=p2.F;
		}
	}
	if (sum <= c) cout << mid.S << "\n";
	else cout << "QAQ\n";
}

Test details

Test 1

Verdict: ACCEPTED

input
3924 879 946220794
715906061 690144
84469275 2471193
342978430 5439129
121661929 1037682
...

correct output
546287743

user output
546287743

Test 2

Verdict: ACCEPTED

input
88167 1707 524956898
774419859 6989178
604004551 9832435
167737991 2269442
358798150 2555174
...

correct output
914236511

user output
914236511

Test 3

Verdict: ACCEPTED

input
31616 581 179476115
54325855 9164022
16456007 4565401
239806946 8725999
716200637 7633247
...

correct output
920535409

user output
920535409

Test 4

Verdict: ACCEPTED

input
98691 2857 417298675
415533639 7297106
82574596 294427
387442654 6823303
957625230 3835964
...

correct output
546186278

user output
546186278

Test 5

Verdict: ACCEPTED

input
92939 849 562933294
26004445 9766078
394938284 8258624
897460032 7925831
666896818 890996
...

correct output
983334766

user output
983334766

Test 6

Verdict: ACCEPTED

input
34973 1557 811228206
594706176 9325182
598316448 8289593
656356485 4340817
292795138 1665845
...

correct output
873495236

user output
873495236

Test 7

Verdict: ACCEPTED

input
27265 1083 624631620
299977528 700873
201333939 2912197
506951995 6670795
881243101 9705838
...

correct output
892733038

user output
892733038

Test 8

Verdict: ACCEPTED

input
54295 923 180647897
861016742 6253589
795175194 797597
256523987 5279279
163124381 4869357
...

correct output
859401718

user output
859401718

Test 9

Verdict: ACCEPTED

input
15325 1461 861158233
298747873 9027420
140670312 6786911
274500027 1439931
731863435 2748620
...

correct output
717652779

user output
717652779

Test 10

Verdict: ACCEPTED

input
41224 1685 538424473
401564348 1107286
24122998 7042213
206372611 8269886
806984941 4729821
...

correct output
776999609

user output
776999609

Test 11

Verdict: ACCEPTED

input
35822 175 46455163
890097340 4507765
832233263 7775944
259083908 2205239
473512707 9673115
...

correct output
973250012

user output
973250012

Test 12

Verdict: ACCEPTED

input
52633 893 642750976
171140297 49941
631926476 2620504
525285634 7187347
11895623 8739085
...

correct output
969464627

user output
969464627

Test 13

Verdict: ACCEPTED

input
90746 565 529781264
80385074 88152
975454015 4003883
976670811 116431
23132792 2144932
...

correct output
990884311

user output
990884311

Test 14

Verdict: ACCEPTED

input
12604 187 191598600
691789419 2841465
891574642 4581903
916353573 4409336
694949477 1880434
...

correct output
976788095

user output
976788095

Test 15

Verdict: ACCEPTED

input
5360 287 255398085
410729019 8676848
916237875 3703710
483392452 2910490
559245641 2574428
...

correct output
900100111

user output
900100111

Test 16

Verdict: ACCEPTED

input
28277 1759 832895636
144086923 9502972
367870900 9560654
647862449 9890289
52507286 7478743
...

correct output
765128638

user output
765128638

Test 17

Verdict: ACCEPTED

input
33661 695 451724012
968049256 8491325
76768950 276366
622834949 6732293
311427626 7899737
...

correct output
956228416

user output
956228416

Test 18

Verdict: ACCEPTED

input
36198 1819 984700276
190101412 9604672
576820690 1733949
23051541 6443649
302468188 5423757
...

correct output
859055500

user output
859055500

Test 19

Verdict: ACCEPTED

input
35174 925 711558821
212256956 5827327
497617351 2233003
417312149 1304754
352549809 7628106
...

correct output
953407478

user output
953407478

Test 20

Verdict: ACCEPTED

input
5187 383 241853142
920774366 5901000
935684996 9378445
691263765 6948767
31561270 3261129
...

correct output
814827201

user output
814827201

Test 21

Verdict: ACCEPTED

input
24121 5091 57405290
355377366 4007574
412806469 8938253
1493553 7081397
420374591 9570474
...

correct output
QAQ

user output
QAQ

Test 22

Verdict: ACCEPTED

input
78035 11779 63478394
180473827 4126975
957080 9012459
890020685 5435841
756166873 7878665
...

correct output
QAQ

user output
QAQ

Test 23

Verdict: ACCEPTED

input
20451 3603 680009020
665058867 1767771
386063953 7995880
64426075 9548610
500344020 413530
...

correct output
QAQ

user output
QAQ

Test 24

Verdict: ACCEPTED

input
67127 4573 567822753
658695073 5061073
861306364 5225933
421237971 5143175
981182542 3853770
...

correct output
QAQ

user output
QAQ