Help needed in 2222B - Artistic Balance Tree | Why is my solution not working ?
Problem Link: https://codeforces.com/contest/2222/problem/B
My code:
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ll long long
#define ld long double
#define MOD 1000000007
void solve(){
int n, m; cin >> n >> m;
vector<int> a(n + 1), x(m);
for(int i = 1; i <= n; i++) cin >> a[i];
for(int i = 0; i < m; i++) cin >> x[i];
int sum = accumulate(a.begin(), a.end(), 0LL);
if(n == 1){
bool is_odd_query = false;
for(int i = 0; i < m; i++){
if(x[i] % 2 == 1) is_odd_query = true;
}
if(is_odd_query) cout << 0 << "\n";
else cout << sum << "\n";
}
vector<int> odd_idx, even_idx;
for(int i = 1; i <= n; i++){
if(i % 2 == 0) even_idx.push_back(a[i]);
else odd_idx.push_back(a[i]);
}
sort(odd_idx.rbegin(), odd_idx.rend());
sort(even_idx.rbegin(), even_idx.rend());
int cnt_odd_queries = 0;
for(int i = 0; i < m; i++){
if(x[i] % 2 == 1) cnt_odd_queries++;
}
int cnt_even_queries = m - cnt_odd_queries;
int pos_odd = 0, pos_even = 0;
for(int i = 0; i < odd_idx.size(); i++){
if(odd_idx[i] >= 0) pos_odd++;
}
for(int i = 0; i < even_idx.size(); i++){
if(even_idx[i] >= 0) pos_even++;
}
int neg_odd = odd_idx.size() - pos_odd;
int neg_even = even_idx.size() - pos_even;
if(pos_odd == 0 && !odd_idx.empty()) sum -= odd_idx[0];
if(cnt_odd_queries >= pos_odd){
for(int i = 0; i < odd_idx.size(); i++){
if(odd_idx[i] >= 0) sum -= odd_idx[i];
}
}
else{
for(int i = 0; i < cnt_odd_queries; i++) sum -= odd_idx[i];
}
if(pos_even == 0 && !even_idx.empty()) sum -= even_idx[0];
if(cnt_even_queries >= pos_even){
for(int i = 0; i < even_idx.size(); i++){
if(even_idx[i] >= 0) sum -= even_idx[i];
}
}
else{
for(int i = 0; i < cnt_even_queries; i++) sum -= even_idx[i];
}
cout << sum << "\n";
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int tc;
cin >> tc;
while(tc--)
solve();
return 0;
}
It gives Wrong answer on test 2. On viewing the test cases, I see that it fails on this test case:
n = 5, m = 1
a[] = [-1, 2, -1, -2, 0]
x[] = [5]
But, on my local PC, it runs fine and gives correct answer of -2.
Still I'm seeing the message:
wrong answer 9th numbers differ - expected: '-2', found: '0' in the checker log.
Why's that happening? Where is my solution wrong? I can't figure this out. Please help anyone 🙏🙏
Posted Jun 25, 2026, 4:56 PM UTC
15