Untitled
Anonymous
plain_text
02/21/2026 5:20 PM
2.1 KB
28
Indexable
============A=============
void solve(){
int n;
cin>>n;
string s;
cin>>s;
int blocks=1,grTwo=0;
for(int i=1;i<n;i++){
if(s[i]==s[i-1]) grTwo=1;
else blocks++;
}
if(s[0]==s[n-1]) cout<<blocks<<endl;
else cout<<blocks+grTwo<<endl;
}
============B=============
void solve(){
int n;
cin>>n;
string s;
cin>>s;
vector<int> pos0,pos1;
for(int i=0;i<n;i++){
if(s[i]=='0') pos0.push_back(i+1);
else pos1.push_back(i+1);
}
int c0=pos0.size();
int c1=pos1.size();
if (c1 % 2 == 0) {
cout << c1 << endl;
for (int x : pos1) cout << x << " ";
cout << endl;
}
else if (c0 % 2 == 1) {
cout << c0 << endl;
for (int x : pos0) cout << x << " ";
cout << endl;
}
else cout<<"-1"<<endl;
}
============C=============
ll solve(){
ll n,h,k;
cin>>n>>h>>k;
vector<ll> a(n);
cin>>a;
ll sum=0;
for(auto x:a) sum+=x;
ll comp=0,rem=0;
if(h%sum==0){
comp=(h/sum)-1;
rem=sum;
}
else{
comp=h/sum;
rem=h%sum;
}
ll time=comp*(n+k);
vector<ll> suff_max(n);
suff_max[n-1]=a[n-1];
for(int i=n-2;i>=0;i--) suff_max[i]=max(a[i],suff_max[i+1]);
ll power=0,min_num=INT_MAX;
for(int i=0;i<n;i++){
power+=a[i];
min_num=min(min_num,a[i]);
if(power>=rem) return time+i+1;
else{
assert(i!=n-1);
ll swap_power=power-min_num+suff_max[i+1];
if(swap_power>=rem) return time+i+1;
}
}
assert(false);
return -1;
}
Editor is loading...
Leave a Comment