QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#687418 | #6471. Binary Transformations | LaVuna47# | WA | 0ms | 3856kb | C++20 | 1.8kb | 2024-10-29 18:55:39 | 2024-10-29 18:55:39 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define sz(x) (int)(x).size()
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define pb push_back
#define x first
#define y second
#define FOR(i, a, b) for(int i = (a); i < (b); i++)
#define RFOR(i, a, b) for(int i = (a) - 1; i >= (b); i--)
typedef long long ll;
typedef double db;
typedef long double LD;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<db, db> pdd;
#ifdef ONPC
mt19937 rnd(228);
#endif
ll f(vector<vector<ll>> vals, int d, ll S)
{
ll res = 0;
FOR(i,0,d)
{
S -= vals[3][i];
res += S;
vals[1].pb(vals[3][i]);
}
sort(all(vals[1]));
for(auto item: vals[2])
{
S -= item;
res += S;
}
for(auto item: vals[1])
{
S += item;
res += S;
}
return res;
}
int solve()
{
int n;
if(!(cin >> n))
return 1;
vector<ll> C(n);
FOR(i,0,n) cin >> C[i];
string a, b;
cin >> a >> b;
ll S = 0;
FOR(i,0,n) if(a[i] == '1') S += C[i];
vector<vector<ll>> vals(4);
FOR(i,0,n)
{
if(a[i] == '1' && b[i] == '1')
vals[3].pb(C[i]);
else if(a[i] == '1' && b[i] == '0')
vals[2].pb(C[i]);
else if(a[i] == '0' && b[i] == '1')
vals[1].pb(C[i]);
}
sort(rall(vals[3]));
sort(rall(vals[2]));
sort(all(vals[1]));
ll res = 1e18;
FOR(d,0,sz(vals[3])+1)
{
res = min(res, f(vals, d, S));
}
cout << res << '\n';
return 0;
}
int32_t main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int TET = 1e9;
//cin >> TET;
for (int i = 1; i <= TET; i++)
{
if (solve())
break;
#ifdef ONPC
cerr << "_________________________________\n";
#endif
}
#ifdef ONPC
cerr << "\nfinished in " << clock() * 1.0 / CLOCKS_PER_SEC << " sec\n";
#endif
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3784kb
input:
5 5 2 6 1 5 01110 10011
output:
21
result:
ok single line: '21'
Test #2:
score: 0
Accepted
time: 0ms
memory: 3856kb
input:
10 54 57 56 56 34 26 62 57 94 93 1101100111 0111110011
output:
1498
result:
ok single line: '1498'
Test #3:
score: -100
Wrong Answer
time: 0ms
memory: 3784kb
input:
100 13497 84812 46650 96837 47518 81363 69563 49672 62222 59492 2399 70142 66019 23108 34561 48256 89591 70076 35039 20871 56909 44505 91578 96372 47174 73772 45594 75368 50125 79114 39144 60524 75020 85709 33811 68779 99668 89361 25932 45107 41881 70392 77449 37880 20372 49639 24933 76529 43903 136...
output:
86253225
result:
wrong answer 1st lines differ - expected: '83548857', found: '86253225'