Advertisement
Guest User

Untitled

a guest
Dec 8th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.43 KB | None | 0 0
  1. int countSubSeqs(vector<int> &A) {
  2.     int N = A.size();
  3.     if (N == 0) {
  4.         return 1;
  5.     }
  6.     vector<int> ans(N, 0);
  7.     unordered_map<int, int> last;
  8.     ans[0] = 2;
  9.     last[A[0]] = 0;
  10.     for (int i = 1; i < N; i++) {
  11.         if (last.find(A[i]) == last.end()) {
  12.             ans[i] = 2 * ans[i - 1];
  13.         } else {
  14.             int extra = last[A[i]] == 0 ? 1 : ans[last[A[i]] - 1];
  15.             ans[i] = 2 * ans[i - 1] - extra;
  16.         }
  17.         last[A[i]] = i;
  18.     }
  19.     return ans[N - 1];
  20. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement