CSES - Datatähti Open 2017 - Results
Submission details
Task:Ice cream
Sender:AMO5
Submission time:2017-01-22 16:58:53 +0200
Language:C++
Status:READY
Result:0
Feedback
groupverdictscore
#10
Test results
testverdicttime
#1ACCEPTED0.04 sdetails
#20.03 sdetails
#3ACCEPTED0.04 sdetails
#40.03 sdetails
#50.04 sdetails
#60.04 sdetails
#70.03 sdetails
#80.04 sdetails
#90.04 sdetails
#100.05 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:51:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int a=0;a<po.size();a++){
                               ^
input/code.cpp:43:36: warning: 'lw1' may be used uninitialized in this function [-Wmaybe-uninitialized]
     if((x/2-p[clw1])>=0) cout << 2*lw1 << endl;
                                    ^

Code

#include <iostream>     // for(int i=0;i<n;i++){}
#include <stdio.h>
#include <ctype.h>
#include <iomanip>      // setprecision cout<<fixed<<setprecision(10)<<ans;
#include <cmath>
#include <string>
#include <vector>
#include <stack>
#include <locale>
#include <sstream>
#include <algorithm>
#include <queue>
#include <string.h>

using namespace std;

int main()
{
    int n,x,lw1,clw1,lw2,clw2;
    cin >> n >> x;
    vector<long long>p(n); vector<long long>w(n);
    for(int a=0;a<n;a++){
        cin >> p[a] >> w[a] ;
    }
    if(n==1){
    for(int a=0;a<n;a++){
        if(p[a]<x){
        if(a==0){ lw1=w[a]; clw1=a;}
        else{
            if((w[a]==lw1&&p[a]<p[clw1])||w[a]>lw1){ lw1=w[a]; clw1=a; }
        }
        }
    }
    for(int a=0;a<n;a++){
        if(a==clw1&&a==0){
            lw2=w[a+1]; clw2=a+1;
        }else if(a==clw1){
        }else{
           if(a==0){lw2=w[a]; clw2=a;}
           else{ if((w[a]==lw2&&p[a]<p[clw2])||w[a]>lw2){ lw2=w[a]; clw2=a; }}
        }
    }
    if((x/2-p[clw1])>=0) cout << 2*lw1 << endl;
    else{
        vector<long long>po;
        int left1=x-p[clw1]; int left2=x-p[clw2];
        for(int a=0;a<n;a++){
            if(p[a]<=left1) po.push_back(lw1+w[a]);
            if(p[a]<=left2) po.push_back(lw2+w[a]);
        }
        for(int a=0;a<po.size();a++){
            if(a==0) lw1=po[a];
            else{
            if(po[a]>lw1) lw1=po[a];
            }
        }
        cout << lw1 << endl;
    }
    }else cout << 2*w[0] << endl;
}

Test details

Test 1

Verdict: ACCEPTED

input
1 749
88 363

correct output
726

user output
726

Test 2

Verdict:

input
2 902
968 550
152 228

correct output
456

user output
1100

Test 3

Verdict: ACCEPTED

input
5 295
35 81
653 771
747 823
871 611
...

correct output
162

user output
162

Test 4

Verdict:

input
10 272
38 13
114 420
42 344
942 307
...

correct output
840

user output
26

Test 5

Verdict:

input
50 468
867 254
870 736
28 739
60 609
...

correct output
2000

user output
508

Test 6

Verdict:

input
100 739
395 712
476 916
102 614
312 533
...

correct output
1928

user output
1424

Test 7

Verdict:

input
100 781
342 898
466 888
713 516
133 389
...

correct output
1894

user output
1796

Test 8

Verdict:

input
100 297
423 506
135 31
279 441
362 969
...

correct output
1906

user output
1012

Test 9

Verdict:

input
100 875
917 956
243 815
365 575
42 846
...

correct output
1960

user output
1912

Test 10

Verdict:

input
100 651
963 307
169 423
172 150
779 998
...

correct output
1970

user output
614