class Solution {
public:
int longestConsecutive(vector<int> &num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
unordered_map<int,int> m;
int i,j,len=num.size(),ans=0;
for(i=0;i<len;++i){
m[num[i]]=1;
}
for(i=0;i<len;++i){
unordered_map<int,int>::iterator it= m.find(num[i]+1);
for(j=num[i]+1;it!=m.end();it=m.find(++j)){
m[num[i]]+=it->second;
m.erase(it);
}
ans=max(m[num[i]],ans);
}
return ans;
}
};