#include <bits/stdc++.h> using namespace std; priority_queue <pair<int,pair<int,int> > > pq; int a[100009] {}; int b[100009] {}; int kto[100009] {}; int wart[100009] {}; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,d=0,ka,kb; long long mmax=INT_MIN,x=0; pair <int,pair<int,int> > obr; cin>>n>>ka; kb=n-ka; for (int i=0;i<n;i++) {cin>>a[i];} for (int i=0;i<n;i++) {cin>>b[i];} for (int i=0;i<n;i++) { if (a[i]>b[i]) {d=a[i]-b[i]; if (d<0) {d=0;} pq.push({d,{i,3}});} else {d=b[i]-a[i]; if (d<0) {d=0;} pq.push({d,{i,2}});} } while (kb>0 && ka>0) { obr=pq.top(); kto[obr.second.first]=obr.second.second; if (obr.second.second==2) {ka--;} else {kb--;} pq.pop(); } if (kb>0) { for (int i=0;i<n;i++) {if (kto[i]==0) kto[i]=3;} } else { for (int i=0;i<n;i++) {if (kto[i]==0) {kto[i]=2;} } } for (int i=0;i<n;i++) { if (kto[i]==2) {wart[i]=a[i];} else {wart[i]=b[i];} } for (int i=0;i<n;i++) {x=x+wart[i]; if (x<0) {x=0;} if (mmax<x) mmax=x; } cout<<mmax<<"\n"; for (int i=0;i<n;i++) {if (kto[i]==2) {cout<<"A";} else {cout<<"B";}} return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | #include <bits/stdc++.h> using namespace std; priority_queue <pair<int,pair<int,int> > > pq; int a[100009] {}; int b[100009] {}; int kto[100009] {}; int wart[100009] {}; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,d=0,ka,kb; long long mmax=INT_MIN,x=0; pair <int,pair<int,int> > obr; cin>>n>>ka; kb=n-ka; for (int i=0;i<n;i++) {cin>>a[i];} for (int i=0;i<n;i++) {cin>>b[i];} for (int i=0;i<n;i++) { if (a[i]>b[i]) {d=a[i]-b[i]; if (d<0) {d=0;} pq.push({d,{i,3}});} else {d=b[i]-a[i]; if (d<0) {d=0;} pq.push({d,{i,2}});} } while (kb>0 && ka>0) { obr=pq.top(); kto[obr.second.first]=obr.second.second; if (obr.second.second==2) {ka--;} else {kb--;} pq.pop(); } if (kb>0) { for (int i=0;i<n;i++) {if (kto[i]==0) kto[i]=3;} } else { for (int i=0;i<n;i++) {if (kto[i]==0) {kto[i]=2;} } } for (int i=0;i<n;i++) { if (kto[i]==2) {wart[i]=a[i];} else {wart[i]=b[i];} } for (int i=0;i<n;i++) {x=x+wart[i]; if (x<0) {x=0;} if (mmax<x) mmax=x; } cout<<mmax<<"\n"; for (int i=0;i<n;i++) {if (kto[i]==2) {cout<<"A";} else {cout<<"B";}} return 0; } |