#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef pair<ld,ld> pld;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<pii> vpi;
typedef vector<pll> vpl;
typedef vector<pld> vpd;
#define pb push_back
#define popb pop_back
#define all(v) (v).begin(),(v).end()
#define ff first
#define ss second
const ll MOD = 1e9 + 7;
const ll INF = 1e18;
int nx[4] = {1,-1,0,0}, ny[4] = {0,0,1,-1};
ll gcd(ll a , ll b) {return b ? gcd(b , a % b) : a ;}
ll lcm(ll a, ll b){return (a / gcd(a, b)) * b;}
ld dist(ld x1, ld y1, ld x2, ld y2){return sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));}
const int MAX_N = 1e5 + 4;
int dp[MAX_N][4][4][4][4];
int n;
vi A;
int f(int i, int x1, int x2, int y1, int y2)
{
if(dp[i][x1][x2][y1][y2] != -1)
return dp[i][x1][x2][y1][y2];
unordered_set<int> u;
unordered_set<int> v;
if(x1 != 0)
u.insert(x1);
if(x2 != 0)
u.insert(x2);
if(y1 != 0)
v.insert(y1);
if(y2 != 0)
v.insert(y2);
u.insert(A[i]);
v.insert(A[i]);
if(i == n-1)
{
return dp[i][x1][x2][y1][y2] = max(u.size(),v.size());
}
int x = f(i+1,x2,A[i],y1,y2) + u.size();
int y= f(i+1,x1,x2,y2,A[i]) + v.size();
return dp[i][x1][x2][y1][y2] = max(x,y);
}
void solve()
{
memset(dp,-1,sizeof(dp));
cin >> n;
for(int i = 0; i <n; i ++)
{
char c; cin >> c;
if(c== 'M')
A.pb(1);
else if(c=='F')
A.pb(2);
else
A.pb(3);
}
cout << f(0,0,0,0,0);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int tt = 1;
while(tt--)
solve();
}
Compilation message
miners.cpp:2: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
2 | #pragma GCC optimization ("O3")
|
miners.cpp:3: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
3 | #pragma GCC optimization ("unroll-loops")
|
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
41 ms |
100484 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
40 ms |
100512 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
37 ms |
100492 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
39 ms |
100420 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
43 ms |
100516 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
42 ms |
100412 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
48 ms |
100984 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
76 ms |
103108 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
181 ms |
106132 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
336 ms |
114260 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
707 ms |
139464 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1426 ms |
157512 KB |
Output is correct |