Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream fin("exclusiv.in");
- ofstream fout("exclusiv.out");
- struct elem
- {
- int val, ind;
- };
- elem v[2005];
- int N, M, s[100005], sol[2005];
- int maxm, l, lmax;
- bool compara(elem a, elem b)
- {
- if(a.val != b.val)
- return (a.val < b.val);
- return (a.ind < b.ind);
- }
- int cautB(elem sir[], int n, int x)
- {
- int low=1, high=n, res = -1;
- while(low <= high)
- {
- int mid = (low + high) / 2;
- if(sir[mid].val > x)
- high = mid - 1;
- else if(sir[mid].val < x)
- low = mid + 1;
- else
- {
- res=mid;
- high=mid-1;
- }
- }
- return res;
- }
- int main()
- {
- int i, j;
- fin>>M>>N;
- for(i=1; i<=M; ++i)
- fin>>s[i];
- for(i=1; i<=N; ++i)
- {
- fin>>v[i].val;
- v[i].ind=i;
- }
- sort(v+1, v+N+1, compara);
- for(j=1; j<=M; ++j)
- {
- int cb=cautB(v, N, s[j]);
- if(cb>0)
- s[j]=v[cb].ind;
- else
- s[j]=(N+1);
- }
- for(i=1; i<=N; ++i)
- {
- int lg=0;
- for(j=1; j<=M; ++j)
- {
- if(s[j]>i)
- {
- lg++;
- }
- else
- {
- sol[i]=max(lg, sol[i]);
- lg=0;
- }
- }
- sol[i]=max(lg, sol[i]);
- }
- for(i=1; i<=N; ++i)
- fout<<sol[i]<<'\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement