Feirinha de Artesanato
Problem LinkSolution by dudu — 100 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