Advertisement
Guest User

Untitled

a guest
Jul 2nd, 2015
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <queue>
  5. #include <stack>
  6. #include <map>
  7. #include <algorithm>
  8. #include <numeric>
  9. #include <functional>
  10. #include <set>
  11. #include <sstream>
  12. #include <cstdio>
  13. #include <cstdlib>
  14. #include <cstring>
  15. #include <cmath>
  16. #include <cctype>
  17. #include <climits>
  18. #include <fstream>
  19. #include <time.h>
  20.  
  21. #define ll long long
  22. #define FOR(i,a,b) for(int i=(a);i<((int)b);++i)
  23. #define REP(i,n) FOR(i,0,n)
  24. #define FOE(i,a) for(auto i : a)
  25. #define ALL(c) (c).begin(), (c).end()
  26. #define DUMP(x) cerr << #x << " = " << (x) << endl;
  27. #define SUM(x) std::accumulate(ALL(x), 0L)
  28. #define EPS 1e-14
  29.  
  30. using namespace std;
  31.  
  32. struct ColorfulRoad {
  33. string road;
  34. int getMin(string _road) {
  35. road = _road;
  36. vector<int> v(road.size(), INT_MAX);
  37. v[0] = 0;
  38. map<char, char> next = { { 'R', 'G' }, { 'G', 'B' }, {'B', 'R'} };
  39. REP(i, road.size()) {
  40. FOR(j, i + 1, road.size()) {
  41. if (road[j] == next[road[i]] && v[i] != INT_MAX) {
  42. v[j] = min(v[j], v[i] + (j - i) * (j - i));
  43. }
  44. }
  45. }
  46.  
  47. return (v[v.size() - 1] == INT_MAX) ? -1: v[v.size() - 1];
  48. }
  49. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement