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

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:31:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while(elite.size() > num) {
                      ^
input/code.cpp:51:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i = num; i < costSort.size(); ++i) {
                      ^

Code

#include<bits/stdc++.h>
using namespace std;
typedef pair<int, int> ii;
typedef long long ll;
const int N = 1 << 17;
#define Q first
#define S second

int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n, m, c;
  cin >> n >> m >> c;
  int num = (m / 2);
  vector<ii> coders;
  for(int i = 0; i < n; ++i) {
    int q, s;
    cin >> q >> s;
    coders.push_back(ii(q, s));
  }
  sort(coders.begin(), coders.end());
  int x = coders.size() - (num + 1);
  //cout << coders.size() << " " << num << " " << x << " " << coders[x].Q << "\n";

  multiset<int> elite;
  ll eliteCost = 0;

  for(int i = coders.size() - 1; i > x; --i) {
    elite.insert(coders[i].S);
  }
  while(elite.size() > num) {
    elite.erase(--elite.end());
  }
  for(int i : elite) {
    eliteCost += i;
  }

  vector<int> costSort;
  for(int i = 0; i <= x; ++i) {
    costSort.push_back(coders[i].S);
  }
  sort(costSort.begin(), costSort.end());

  multiset<int> ok;
  multiset<int> bad;
  ll noobCost = 0;
  for(int i = 0; i < num; ++i) {
    ok.insert(costSort[i]);
    noobCost += costSort[i];
  }
  for(int i = num; i < costSort.size(); ++i) {
    bad.insert(costSort[i]);
  }

  for(int i = x; i >= num; --i) {
    if(ok.find(coders[i].S) != ok.end()) {
      ok.erase(ok.find(coders[i].S));
      noobCost -= coders[i].S;
      noobCost += *bad.begin();
      ok.insert(*bad.begin());
      bad.erase(bad.begin());
    } else {
      bad.erase(bad.find(coders[i].S));
    }
    if(coders[i].S + eliteCost + noobCost <= c) {
      cout << coders[i].Q << "\n";
      return 0;
    }
    eliteCost += coders[i].S;
    elite.insert(coders[i].S);
    eliteCost -= *elite.rbegin();
    elite.erase(--elite.end());
  } 
  cout << "QAQ\n";
  return 0;
}

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