Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 1e5;
- map<string, int> mp;
- int nSeq[N + 1], lis[N + 1];
- int nWire;
- int main(){
- scanf("%d", &nWire);
- for(int i = 1; i <= nWire; ++i){
- char str[11];
- scanf(" %s", str);
- mp.insert(make_pair(str, i));
- }
- for(int i = 1; i <= nWire; ++i){
- char str[11];
- scanf(" %s", str);
- string tmp = str;
- nSeq[i] = mp[str];
- }
- int len = 0;
- lis[0] = -1e9;
- for(int i = 1; i <= nWire; ++i){
- if(nSeq[i] == 0){
- continue;
- }
- int *ptr = lower_bound(lis, lis + len + 1, nSeq[i]);
- *ptr = nSeq[i];
- if(ptr - lis > len){
- ++len;
- }
- }
- cout << len;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement