Link: https://www.acmicpc.net/problem/13144
- 수열에서 연속한 1개 이상의 수 -> 투 포인터(정렬에 대한 언급이 없으므로 거의 확정)
- 여러 번 등장하지 않는 경우 -> 투 포인터로 끝 자리를 방문했는지 여부를 확인(확정)
#include<iostream>
#include<cstring>
using namespace std;
int n;
int a[100001];
bool vis[100001]{ 0 };
void input() {
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> a[i];
}
}
void solution() {
input();
int en = 0;
long long answer = 0;
for (int st = 0; st < n; ++st) {
while (en < n) {
if (vis[a[en]]) break;
vis[a[en++]] = 1;
}
answer += en - st;
vis[a[st]] = 0;
}
cout << answer;
}
int main() {
cin.tie(0), cout.tie(0), ios_base::sync_with_stdio(0);
solution();
return 0;
}