Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <vector>
- #include <queue>
- #include <stack>
- #include <map>
- #include <algorithm>
- #include <numeric>
- #include <functional>
- #include <set>
- #include <sstream>
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- #include <cmath>
- #include <cctype>
- #include <climits>
- #include <fstream>
- #include <time.h>
- #define ll long long
- #define FOR(i,a,b) for(int i=(a);i<((int)b);++i)
- #define REP(i,n) FOR(i,0,n)
- #define FOE(i,a) for(auto i : a)
- #define ALL(c) (c).begin(), (c).end()
- #define DUMP(x) cerr << #x << " = " << (x) << endl;
- #define SUM(x) std::accumulate(ALL(x), 0L)
- #define EPS 1e-14
- using namespace std;
- struct ColorfulRoad {
- string road;
- int getMin(string _road) {
- road = _road;
- vector<int> v(road.size(), INT_MAX);
- v[0] = 0;
- map<char, char> next = { { 'R', 'G' }, { 'G', 'B' }, {'B', 'R'} };
- REP(i, road.size()) {
- FOR(j, i + 1, road.size()) {
- if (road[j] == next[road[i]] && v[i] != INT_MAX) {
- v[j] = min(v[j], v[i] + (j - i) * (j - i));
- }
- }
- }
- return (v[v.size() - 1] == INT_MAX) ? -1: v[v.size() - 1];
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement