Source Code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
#define sp ' '
#define assert(x,a) if(x){cout << a << endl;return;}
#define sortv(x)sort(x.begin(),x.end())
#define revev(x)reverse(x.begin(),x.end())
inline void fast(){
    std::ios_base::sync_with_stdio(0);
    std::cin.tie(nullptr);
    std::cout.tie(nullptr);
    }
vector<vector<int>>graph;

vector<bool>vis(100001,false);
bool sortbysec(const pair<int,int> &a,
              const pair<int,int> &b)
{
    return (a.second < b.second);
}
inline void answer(int c){assert(c==0,"NO")cout << "YES" << endl;}
void solve()
{
    int n;cin >> n;
    string s;cin >> s;
    char first = s[0];
    char last = s.back();
    if(s.length() == 1)
        cout << 0;
    else
    {
        vector<int>index;
        vector<int>index2;
        for(int i = 0;i < s.length();i++)
        {
            if(s[i] == first)
              index.push_back(i);
            else if(s[i] == last)
               index2.push_back(i);
        }
        if(first ==last )
            cout << n-1 << endl;
        else
        {
            if(index.back() > (n - 1)-index2[0])
            {
                int i = 0;
                while(index2[i] < index.back())
                {
                    i++;
                }
                cout << s.substr(index.back(),index2[i] + 1).length();
            }
            else
            {
                int i = 0;
                bool flag = false;
                while(index[i] < index.back())
                {
                    flag = true;
                    i++;
                }
                if(flag)
                    i--;
                cout << s.substr(index.back(),index2[i] + 1).length();
            }
        }
    }
}
int main()
{
    fast();
    ll t{ 1 };//cin >> t;
  // cin.ignore();
    while (t--)
    {
        solve();
    }
}
Copy
Pop Pop iwjx
GNU G++17
3 ms
256 KB
Wrong Answer