Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int para[100000];
- map<int,int> mp2, mp;
- int pp[100000];
- int a[100000],t[100000];
- int maxi,pmax1,pmax,p;
- int n;
- void printPrevBigger()
- {
- stack<int> S;
- for (int i=0; i<n; i++)
- {
- while (!S.empty() && S.top() < a[i])
- S.pop();
- if (S.empty()){
- t[i] = 0;
- pmax1 = i;
- //pmax = i;
- //p = i;
- //maxi = 0;
- }
- else{
- t[i] = pp[a[i]] - pp[S.top()];
- if(t[i]>maxi){
- maxi = t[i];
- p = i;
- pmax = pmax1;
- }
- }
- S.push(a[i]);
- }
- }
- int main()
- {
- int u;
- scanf("%d", &u);
- //cin >> u;
- while(u--){
- scanf("%d", &n);
- //cin >> u;
- //mp.clear();
- //mp2.clear();
- set<int> st;
- pmax1=0;
- maxi=0;
- pmax=0;
- p=0;
- for(int i=0; i<n; i++){
- //cin >> a[i];
- scanf("%d", &a[i]);
- pp[a[i]] = i;
- }
- printPrevBigger();
- /*for(int i=0; i<n; i++){
- if(t[i] == 0){
- pmax = i;
- p = i;
- maxi = 0;
- }
- /*if(mp[para[i]]) t[i] = mp[a[i]]-mp[para[i]];
- else t[i] = 0;
- if(t[i]>maxi){
- maxi = t[i];
- p = i;
- }
- }*/
- //int brojac = 0;
- for(int i=pmax; i<p; i++){
- /*if(mp[para[i]]) t = mp[a[i]]-mp[para[i]];
- else t = 0;
- if(mp2[t[i]] == 0){
- mp2[t[i]] = 1;
- brojac ++;
- }*/
- st.insert(t[i]);
- }
- //cout << st.size() << endl;
- printf("%d\n", st.size());
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement