第二个重复出现的数 (c++),该如何处理

第二个重复出现的数 (c++)
给定一个正整数数组(元素的值都大于零),输出数组中第二个重复出现的正整数,如果没有,则输出字符串"NOT EXIST"。
 
关于输入 
第一行为整数m,表示有m组数据。 
其后每组数据分两行: 
第一行为正整数n(3<n<500),表示数组的长度; 
第二行是n个正整数,正整数间用空格分开。
 
关于输出 
有m行输出,每行输出对于数组中第二个重复出现的正整数,如果没有,则输出字符串"NOT EXIST"。
 
例子输入 
5

10

1 3 5 7 9 7 8 5 2 6

10

1 3 5 5 7 9 7 8 2 6

10

1 3 5 5 7 9 4 8 2 6

10

1 3 5 7 2 9 9 8 7 5

10

1 3 5 2 7 9 9 8 7 5
 
例子输出 
7

7

NOT EXIST

7

7
 我编的程序有错么  查不出来啊
#include<iostream>
using namespace std;
int main(){
    int n,m,k,s,i,j,b;
    int a[500];
    cin>>n;
           for(i=0;i<n;i++)
           {
                           s=b=0;
              cin>>m;
              for(j=0;j<m;j++)
              {
                  cin>>a[j];
}
              for(j=1;j<m;j++)
              {
                 for(k=0;k<j;j++)
                 {
                            if(a[k]==a[j])
                               {
                                    if(b<k)
                                    {
                                        b=k;
                                        }
                                       s=s+1;
                                        if(s==2)
                                        {
                                           cout<<a[b]<<endl;
                                           }
                                          }  
                              }
                              }
                              if(s<2)
                              cout<<"NOT EXIST"<<endl;
                                    }
                                    return 0;
                                    }

------解决思路----------------------
#include<iostream>
using namespace std;
int main(){
  int n,m,k,s,i,j,b;
  int a[500];
  cin>>n;
  for(i=0;i<n;i++)
    {
      s=b=0;
      cin>>m;
      for(j=0;j<m;j++)
        {
          cin>>a[j];
        }
      for(j=1;j<m;j++)
        {
          for(k=0;k<j;k++)////                                                                                                                                                     
            {
              if(a[k]==a[j])
                {

                  s=s+1;
                  // break;                                                                                                                                                        
                  if(s==2)
                    {
                      cout<<a[k]<<endl;///                                                                                                                                         
                    }
                  break;
                }
            }
        }
      if(s<2)
        cout<<"NOT EXIST"<<endl;
    }
  return 0;
}




------解决思路----------------------

/*
 * bbs.csdn.net/topics/390921307
 */

#include <stdio.h>

int find(int a[], int n)
{
    int i, j, k;

    k = 0;
    for (i = 0; i < n; i++) {
        for (j = i + 1; j < n; j++) {
            if (a[i] == a[j]) {
                if (++k == 2)
                    return a[i];
                break;
            }
        }
    }

    return 0;
}

int
main(int argc, char *argv[])
{
    int r;
    int i, j, m, n;
    int a[500];

    scanf("%d\n", &m);
    for (j = 0; j < m; j++) {
        scanf("%d", &n);
        for (i = 0; i < n; i++) {
            scanf("%d", &a[i]);
        }
        r = find(a, n);
        if (r)
            printf("%d\n", r);
        else
            printf("%s\n", "NOT EXIST");
    }

    return 0;
}

/*
给定一个正整数数组(元素的值都大于零),输出数组中第二个重复出现的正整数,如果没有,则输出字符串"NOT EXIST"。
 
关于输入 
第一行为整数m,表示有m组数据。 
其后每组数据分两行: 
第一行为正整数n(3<n<500),表示数组的长度; 
第二行是n个正整数,正整数间用空格分开。
 
关于输出 
有m行输出,每行输出对于数组中第二个重复出现的正整数,如果没有,则输出字符串"NOT EXIST"。
 
例子输入 
5
10
1 3 5 7 9 7 8 5 2 6
10
1 3 5 5 7 9 7 8 2 6
10
1 3 5 5 7 9 4 8 2 6
10
1 3 5 7 2 9 9 8 7 5
10
1 3 5 2 7 9 9 8 7 5

例子输出 
7
7
NOT EXIST
7
7
*/