Cod sursa(job #3338831)

Utilizator Octavian09Dore Octaviam Octavian09 Data 5 februarie 2026 10:04:06
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
#include <fstream>
#include <vector>
#include <cstring>
using namespace std;

ifstream cin("charlie.in");
ofstream cout("charlie.out");

int p;
char s[100005];

void citire(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin>>p>>s;
}

void cerinta1(){
    int lmax=0,l=1,n=strlen(s);
    for(int i=1;i<n-1;i++){
        if(s[i]<s[i-1]&&s[i]<s[i+1]){
            l+=2;
            i++;
        }else{
            if(l>lmax)lmax=l;
            l=1;
        }
    }
    if(l>lmax)lmax=l;
    cout<<lmax;
}

void cerinta2(){
    vector<char> v;
    long long cost=0;
    int n=strlen(s);
    for(int i=0;i<n;i++){
        v.push_back(s[i]);
        while(v.size()>=3){
            int sz=v.size();
            if(v[sz-2]<v[sz-3]&&v[sz-2]<v[sz-1]){
                cost+=max(v[sz-3]-'a'+1,v[sz-1]-'a'+1);
                char ultimul=v.back();
                v.pop_back();
                v.pop_back();
                v.push_back(ultimul);
            }else break;
        }
    }
    for(int i=0;i<v.size();i++)cout<<v[i];
    cout<<'\n'<<cost;
}

int main(){
    citire();
    if(p==1)cerinta1();
    else cerinta2();
    return 0;
}