Feirinha de Artesanato

Problem Link

Solution by dudu100 pts

Code / Notes

#include <bits/stdc++.h>
using namespace std;

int main() {
    int N;
    cin >> N;

    vector<int> T(N);
    for (int i = 0; i < N; i++) {
        cin >> T[i];
    }

    vector<int> P(N);
    for (int i = 0; i < N; i++) {
        cin >> P[i];
    }

    vector<int> T1, T2;
    for (int i = 0; i < N; i++) {
        if (T[i] == 1) {
            T1.push_back(P[i]);
        } else {
            T2.push_back(P[i]);
        }
    }

    sort(T1.begin(), T1.end());
    sort(T2.begin(), T2.end());

    int i1 = 0, i2 = 0;
    int ans = 0;

    int C;
    cin >> C;
    for (int i = 0; i < C; i++) {
        int c;
        cin >> c;

        if (c == 0) {
            // indeciso
            if (i1 == T1.size() and i2 == T2.size()) {
                
            } else if (i1 == T1.size()) {
                ans += T2[i2];
                i2++;
            } else if (i2 == T2.size()) {
                ans += T1[i1];
                i1++;
            } else if (T1[i1] <= T2[i2]) {
                ans += T1[i1];
                i1++;
            } else {
                ans += T2[i2];
                i2++;
            }
        } else if (c == 1) {
            if (i1 < T1.size()) {
                ans += T1[i1];
                i1++;
            }
        } else if (c == 2) {
            if (i2 < T2.size()) {
                ans += T2[i2];
                i2++;
            }
        }
    }

    cout << ans << endl;
}

Last updated 1 month, 3 weeks ago


« Back to problem