Submission details
Task:Coders
Sender:Häviö Life
Submission time:2015-09-30 17:34:58 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.05 sdetails
#2ACCEPTED0.35 sdetails
#3ACCEPTED0.15 sdetails
#4ACCEPTED0.45 sdetails
#5ACCEPTED0.34 sdetails
#6ACCEPTED0.17 sdetails
#7ACCEPTED0.12 sdetails
#8ACCEPTED0.23 sdetails
#9ACCEPTED0.10 sdetails
#10ACCEPTED0.19 sdetails
#11ACCEPTED0.17 sdetails
#12ACCEPTED0.20 sdetails
#13ACCEPTED0.35 sdetails
#14ACCEPTED0.09 sdetails
#15ACCEPTED0.07 sdetails
#16ACCEPTED0.14 sdetails
#17ACCEPTED0.17 sdetails
#18ACCEPTED0.17 sdetails
#19ACCEPTED0.17 sdetails
#20ACCEPTED0.05 sdetails
#21ACCEPTED0.17 sdetails
#22ACCEPTED0.47 sdetails
#23ACCEPTED0.15 sdetails
#24ACCEPTED0.40 sdetails

Compiler report

input/code.cpp: In function 'bool can_achieve(long long int)':
input/code.cpp:48:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(y.size()<(m+1)/2)
                ^

Code

#include <iostream>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
#include <cmath>
#include <iomanip>
#include <unordered_set>
#include <stdio.h>
#include <string.h>
#include <unordered_map>
#include <fstream>
#include <set>
#include <map>

#define MOD 1000000007
#define ll long long
#define N (1<<50)
#define float double
#define str string

using namespace std;

struct coder{
    ll q, s;
};

bool operator<(coder a, coder b){
    return a.s<b.s;
}

coder mem[100000];
ll n,m,c;

bool can_achieve(ll Q){
    unordered_set<ll> asd;

    vector<coder> y,a;
    for(int i=0; i<n; i++){
        if(mem[i].q>=Q)
            y.push_back(mem[i]);

        a.push_back(mem[i]);
    }

    sort(y.begin(), y.end());
    sort(a.begin(), a.end());
    if(y.size()<(m+1)/2)
        return false;

    ll C=0;
    for(int i=0; i<(m+1)/2; i++){
        C+=y[i].s;
        asd.insert(y[i].q);
    }

    int jalj=m/2;
    int it=0;
    while(jalj){
        if(asd.count(a[it].q)==0){
            jalj--;
            C+=a[it].s;
        }
        it++;
    }

    return (C<=c);
}

int main(){
    cin>>n>>m>>c;
    for(int i=0; i<n; i++)
        cin>>mem[i].q>>mem[i].s;

    ll a=0, y=1000000001;
    while(a<y){
        ll k=(a+y+1)/2;
        if(can_achieve(k))
            a=k;
        else
            y=k-1;
    }
    if(a!=0)
        cout<<a<<endl;
    else
        cout<<"QAQ"<<endl;
    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