Submission #5812818


Source Code Expand

#include <bits/stdc++.h>

using namespace std;

#define _for(i,j,N) for(int i = (j);i < (N);i++)
#define _rep(i,j,N) for(int i = (j);i <= (N);i++)
#define ALL(x) x.begin(),x.end()
#define pb push_back
#define mk make_pair

typedef long long LL;
typedef pair<int,int> Interval;

template<typename T>
ostream& operator<<(ostream& os,const vector<T>& v) {
    _for(i,0,v.size()) os << v[i] << " ";
    return os;
}

template<typename T>
ostream& operator<<(ostream& os,const set<T>& v){
    for(typename set<T>::iterator it = v.begin();it != v.end();it++)
    os << *it <<" ";
    return os;
}

template<typename T1,typename T2>
ostream& operator<<(ostream& os,const pair<T1,T2>& v){
    os << v.first <<" "<<v.second<<endl;
    return os;
}

const int maxn = 1e5+5;
LL A[maxn];
LL B[maxn];
LL C[maxn];

vector<int> vi;
vector<int> ansA;
vector<int> ansB;
vector<int> ansC;

struct CmpAB{
    bool operator()(const int &a,const int &b){
        return (A[a]-B[a]) > (A[b] - B[b]);
    }
};
struct CmpAC{
    bool operator()(const int &a,const int &b){
        return (A[a]-C[a]) > (A[b] - C[b]);
    }
};

struct CmpBC{
    bool operator()(const int &a,const int &b){
        return (B[a]-C[a]) > (B[b] - C[b]);
    }
};

int X,Y,Z;
LL sum1[maxn];
LL sum2[maxn];

int main()
{
    cin >> X >> Y >> Z;
    int N = X+Y+Z;

    _rep(i,1,N){
        vi.push_back(i);
        scanf("%lld %lld %lld",&A[i],&B[i],&C[i]);
    }


    sort(ALL(vi),CmpAB());

    LL ans = 0;
    priority_queue<int,vector<int>,CmpAC> pq1;
    priority_queue<int,vector<int>,CmpBC> pq2;

    _for(i,0,X){
        pq1.push(vi[i]);
        ans += A[vi[i]];
    }

    sum1[0] = ans;

    _for(i,1,Z+1){
        int now = X - 1 + i;
        int nn = vi[now];
        int ch = pq1.top();
        sum1[i] = sum1[i-1];

        if(A[nn] - C[nn] > A[ch] - C[ch]){
            sum1[i] -= A[ch];
            sum1[i] += (A[nn]+C[ch]);
            pq1.pop();
            pq1.push(nn);
        }else sum1[i] += C[nn];

    }

    reverse(ALL(vi));

    ans = 0;

    _for(i,0,Y){
        pq2.push(vi[i]);
        ans += B[vi[i]];
    }
    sum2[0] = ans;
    //cout << ans << endl;

    _for(i,1,Z+1){
        int now = Y - 1 + i;
        int nn = vi[now];
        int tp = pq2.top();
        sum2[i] = sum2[i-1];

        if((B[nn] - C[nn]) > B[tp] - C[tp]){
            sum2[i] -= B[tp];
            sum2[i] += (B[nn]+C[tp]);
            pq2.pop();
            pq2.push(nn);
        }else sum2[i] += C[nn];
    }

    reverse(sum2,sum2+Z+1);

    ans = 0;
    _rep(i,0,Z){
        //cout << sum1[i] <<" "<<sum2[i]<<endl;
        ans = max(ans,sum1[i]+sum2[i]);
    }
    //cout << vi << endl;

    cout << ans << endl;
    return 0;
}

Submission Info

Submission Time
Task C - Coins
User youenn98
Language C++14 (GCC 5.4.1)
Score 800
Code Size 2834 Byte
Status AC
Exec Time 59 ms
Memory 4216 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:71:50: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%lld %lld %lld",&A[i],&B[i],&C[i]);
                                                  ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 800 / 800
Status
AC × 3
AC × 35
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
sample_03.txt AC 1 ms 256 KB
subtask_1_01.txt AC 1 ms 256 KB
subtask_1_02.txt AC 9 ms 1024 KB
subtask_1_03.txt AC 12 ms 1536 KB
subtask_1_04.txt AC 27 ms 2172 KB
subtask_1_05.txt AC 33 ms 2556 KB
subtask_1_06.txt AC 45 ms 3192 KB
subtask_1_07.txt AC 10 ms 1152 KB
subtask_1_08.txt AC 43 ms 3704 KB
subtask_1_09.txt AC 10 ms 1024 KB
subtask_1_10.txt AC 38 ms 2936 KB
subtask_1_11.txt AC 53 ms 3704 KB
subtask_1_12.txt AC 35 ms 3704 KB
subtask_1_13.txt AC 50 ms 3704 KB
subtask_1_14.txt AC 59 ms 4216 KB
subtask_1_15.txt AC 59 ms 4088 KB
subtask_1_16.txt AC 43 ms 3960 KB
subtask_1_17.txt AC 42 ms 4216 KB
subtask_1_18.txt AC 50 ms 4216 KB
subtask_1_19.txt AC 58 ms 4216 KB
subtask_1_20.txt AC 53 ms 3832 KB
subtask_1_21.txt AC 35 ms 4088 KB
subtask_1_22.txt AC 49 ms 3704 KB
subtask_1_23.txt AC 58 ms 4088 KB
subtask_1_24.txt AC 59 ms 4088 KB
subtask_1_25.txt AC 43 ms 3832 KB
subtask_1_26.txt AC 46 ms 3704 KB
subtask_1_27.txt AC 52 ms 4216 KB
subtask_1_28.txt AC 58 ms 4216 KB
subtask_1_29.txt AC 1 ms 256 KB