Header Ad

HackerEarth Holiday Season problem solution

In this HackerEarth Holiday Season problem solution, It's a holiday season for all school students around the world! Unfortunately, Mahamba is busy preparing for International Olympiad in Informatics, which will be held in Tehran, Iran. He is now facing a new challenge from his teacher Aceka, and it goes something like this:

You have a string x of length N, which consists of small English letters. You have to find the number of indexes a, b, c and d, such that 1 <= a < b < c < d <= N and xa == xc, as well as xb == xd.

He is baffled and definitely needs some help. So, you, the best programmer in Lalalandia, decided to give him a hand!

HackerEarth Holiday Season problem solution

HackerEarth Holiday Season problem solution.

#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <queue>
#include <stack>
#include <string>
#include <bitset>
#include <cstdio>
#include <limits>
#include <vector>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <fstream>
#include <numeric>
#include <sstream>
#include <cassert>
#include <iomanip>
#include <iostream>
#include <algorithm>
#include <unordered_set>
#include <unordered_map>

using namespace std;

#define f first
#define s second
#define pb push_back
#define pp pop_back
#define mp make_pair
#define ll long long
#define ld double
#define ull unsigned long long
#define PI pair < int, int >

const int N = 2050;
const int M = 123;
const ld Pi = acos(-1);
const ll Inf = 1e18;
const int inf = 1e9;
const int mod = 1e9 + 7;
const int Sz = 501;
const int MOD = 1e9 + 7;

void add(int &a, int b) {
a += b;
if (a >= mod) a -= mod;
int mult(int a, int b) {
return 1ll * a * b % mod;
int sum(int a, int b) {
add(a, b);
return a;

int n, cnt[26];
char a[N];
ll ans;

void solve() {
cin >> n;
assert(1 <= n && n <= 2000);
for (int i = 1;i <= n;i++) {
cin >> a[i];
assert('a' <= a[i] && a[i] <= 'z');
for (int i = 1;i <= n;i++) {
ll now = 0;
for (int j = i + 1;j <= n;j++) {
if (a[j] == a[i]) {
ans += now;
now += cnt[a[j] - 'a'];
cnt[a[i] - 'a']++;
cout << ans << endl;

int main() {
#ifdef wws
freopen("in", "r", stdin);
int tt = 1;
while(tt--) solve();
return 0;

Post a Comment