Vlad likes to eat in cafes very much. During his life, he has visited cafes n times. Unfortunately, Vlad started to feel that his last visits are not any different from each other. To fix that Vlad had a small research.
First of all, Vlad assigned individual indices to all cafes. Then, he wrote down indices of cafes he visited in a row, in order of visiting them. Now, Vlad wants to find such a cafe that his last visit to that cafe was before his last visits to every other cafe. In other words, he wants to find such a cafe that he hasn't been there for as long as possible. Help Vlad to find that cafe.
Input
In first line there is one integer n (1 ≤ n ≤ 2·105) — number of cafes indices written by Vlad.
In second line, n numbers a1, a2, ..., an (0 ≤ ai ≤ 2·105) are written — indices of cafes in order of being visited by Vlad. Vlad could visit some cafes more than once. Note that in numeration, some indices could be omitted.
OutputPrint one integer — index of the cafe that Vlad hasn't visited for as long as possible.
Examples5 1 3 2 1 2
3
6 2 1 2 2 4 1
2
In first test, there are three cafes, and the last visits to cafes with indices 1 and 2 were after the last visit to cafe with index 3; so this cafe is the answer.
In second test case, there are also three cafes, but with indices 1, 2 and 4. Cafes with indices 1 and 4 were visited after the last visit of cafe with index 2, so the answer is 2. Note that Vlad could omit some numbers while numerating the cafes.
题意:给出一个人n次所去咖啡厅的标号,求出最长时间没去的咖啡厅标号思路:记录所有去过的咖啡厅的最晚时间,时间最小的就是长时间没去的咖啡厅代码:#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 2e5+10;
int arr[N],vis[N];
int main(){
int n;
scanf("%d",&n);
int maxt=0,mint=N;
for(int i=1;i<=n;i++){
int x;
scanf("%d",&x);
vis[x]=1;//记录所有去过的咖啡厅
maxt=max(maxt,x);//最小咖啡厅的标号
mint=min(mint,x);//最大咖啡厅的标号
arr[x]=i;//记录去过咖啡厅的最后时间
}
int id=N,x=0;
for(int i=mint;i<=maxt;i++){
if(vis[i]&&arr[i]<id){
id=arr[i];
x=i;
}
}
printf("%d\n",x);
return 0;
}