Created
June 16, 2021 14:10
-
-
Save plasmatic1/981cf8b45c36d0d8f4de0b91ecbd9e46 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ./difference.yml | |
#include "bits/stdc++.h" | |
using namespace std; | |
// Defines | |
#define fs first | |
#define sn second | |
#define pb push_back | |
#define eb emplace_back | |
#define mpr make_pair | |
#define mtp make_tuple | |
#define all(x) (x).begin(), (x).end() | |
// Basic type definitions | |
using ll = long long; using ull = unsigned long long; using ld = long double; | |
using pii = pair<int, int>; using pll = pair<long long, long long>; | |
#ifdef __GNUG__ | |
// PBDS order statistic tree | |
#include <ext/pb_ds/assoc_container.hpp> // Common file | |
#include <ext/pb_ds/tree_policy.hpp> | |
using namespace __gnu_pbds; | |
template <typename T, class comp = less<T>> using os_tree = tree<T, null_type, comp, rb_tree_tag, tree_order_statistics_node_update>; | |
template <typename K, typename V, class comp = less<K>> using treemap = tree<K, V, comp, rb_tree_tag, tree_order_statistics_node_update>; | |
// HashSet | |
#include <ext/pb_ds/assoc_container.hpp> | |
template <typename T, class Hash> using hashset = gp_hash_table<T, null_type, Hash>; | |
template <typename K, typename V, class Hash> using hashmap = gp_hash_table<K, V, Hash>; | |
const ll RANDOM = chrono::high_resolution_clock::now().time_since_epoch().count(); | |
struct chash { ll operator()(ll x) const { return x ^ RANDOM; } }; | |
#endif | |
// More utilities | |
int SZ(string &v) { return v.length(); } | |
template <typename C> int SZ(C &v) { return v.size(); } | |
template <typename C> void UNIQUE(vector<C> &v) { sort(v.begin(), v.end()); v.resize(unique(v.begin(), v.end()) - v.begin()); } | |
template <typename T, typename U> void maxa(T &a, U b) { a = max(a, b); } | |
template <typename T, typename U> void mina(T &a, U b) { a = min(a, b); } | |
const ll INF = 0x3f3f3f3f, LLINF = 0x3f3f3f3f3f3f3f3f; | |
int N; | |
int main() { | |
ios_base::sync_with_stdio(false); | |
cin.tie(NULL); | |
string s; | |
cin >> N >> s; | |
int ans = 0; | |
for (auto i = 0; i < 26; i++) { | |
for (auto j = 0; j < 26; j++) { | |
if (i == j) continue; | |
int csum = 0, rmn = 0, cmin = 0; | |
bool foundj = false; | |
for (auto k = 0; k <= N; k++) { | |
if (s[k-1] != i+'a' && s[k-1] != j+'a') continue; | |
// psum | |
if (s[k-1] == i+'a') | |
csum++; | |
else if (s[k-1] == j+'a') { | |
csum--; | |
foundj = true; | |
mina(cmin, rmn); | |
} | |
mina(rmn, csum); | |
if (foundj) maxa(ans, csum-cmin); | |
} | |
} | |
} | |
cout << (ans) << '\n'; | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment