fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define lli long long int
  4. pair<int,int> p[100005];
  5.  
  6. bool comp(pair<int,int> p1 , pair<int,int> p2){
  7. if(p1.first == p2.first){
  8. //cout<<"hello\n";
  9. if(p1.second > p2.second){
  10. return 1;
  11. }else{
  12. return 0;
  13. }
  14. }
  15. return (p1.first > p2.first);
  16. }
  17.  
  18. int main()
  19. {
  20. int t;
  21. cin>>t;
  22. while(t--){
  23. int n,m;
  24. cin>>n>>m;
  25. int height[n],color[n];
  26. for(int i=0;i<n;i++){
  27. cin>>height[i];
  28. p[i] = make_pair(height[i],i);
  29. }
  30. for(int i=0;i<n;i++){
  31. cin>>color[i];
  32. }
  33. sort(p,p+n,comp);
  34. /*for(int i=0;i<n;i++){
  35.   cout<<p[i].first<<" "<<p[i].second<<"\n";
  36.   }*/
  37. int done=0;
  38. int ans=0,lastcolor=-1;
  39. for(int i=0;i<n;i++){
  40. if(i==0){
  41. done = p[i].second;
  42. lastcolor = color[p[i].second];
  43. ans++;
  44. }else if(p[i].second < done){
  45. continue;
  46. }else if(p[i].second > done){
  47. done = p[i].second;
  48. if(color[p[i].second]==lastcolor){
  49. continue;
  50. }else{
  51. lastcolor=color[p[i].second];
  52. ans++;
  53. }
  54. }
  55. }
  56. cout<<ans<<"\n";
  57. }
  58. return 0;
  59. }
Success #stdin #stdout 0s 16016KB
stdin
1
5 4
3 5 5 2 3
1 3 2 4 3
stdout
2