Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <map>
- #include <cmath>
- #include <vector>
- using namespace std;
- typedef vector<int> vi;
- int main(int argc, char **argv)
- {
- int casos; cin >> casos;
- while(casos--)
- {
- int n; cin >> n;
- int original = n;
- vi numeros;
- while(n--)
- {
- int sgte; cin >> sgte;
- numeros.push_back(sgte);
- }
- int maxglobal = 0;
- int inicio = 0;
- while(1)
- {
- map<int, int> indices;
- int maxlocal = 0;
- bool saliconbreak = false;
- for(int i = inicio; i < original; i++)
- {
- int actual = numeros[i];
- if(!indices.count(actual))
- {
- indices[actual] = i;
- maxlocal++;
- }
- else
- {
- maxglobal = max(maxlocal, maxglobal);
- inicio = indices[actual] + 1;
- saliconbreak = true;
- break;
- }
- }
- if(!saliconbreak)
- {
- maxglobal = max(maxlocal, maxglobal);
- break;
- }
- }
- cout << maxglobal << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement