Advertisement
Josif_tepe

Untitled

May 23rd, 2023
792
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.42 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. const int maxn = 3e5 + 10;
  5.  
  6. int main(){
  7.     ios_base::sync_with_stdio(false);
  8.     int n;
  9.     cin >> n;
  10.     vector<pair<int, int> > rank(n), type(n);
  11.     for(int i = 0; i < n; i++) {
  12.         cin >> rank[i].first;
  13.         rank[i].second = i;
  14.     }
  15.     for(int i = 0; i < n; i++) {
  16.         cin >> type[i].first;
  17.         type[i].second = i;
  18.        
  19.     }
  20.    
  21.     vector<pair<int, int> > ans;
  22.     while(true) {
  23.         int min_difference = 2e9;
  24.         int idx = -1;
  25.         int i1 = -1, i2 = -1;
  26.         for(int i = 0; i + 1 < rank.size(); i++) {
  27.             if(type[i].first != type[i + 1].first) {
  28.                 if(abs(rank[i].first - rank[i + 1].first) < min_difference) {
  29.                     min_difference = abs(rank[i].first - rank[i + 1].first);
  30.                     idx = i;
  31.                     i1 = rank[i].second + 1;
  32.                     i2 = rank[i + 1].second + 1;
  33.                 }
  34.             }
  35.         }
  36.         if(idx == -1) {
  37.             break;
  38.         }
  39.         ans.push_back(make_pair(i1, i2));
  40.         rank.erase(rank.begin() + idx);
  41.         rank.erase(rank.begin() + idx);
  42.         type.erase(type.begin() + idx);
  43.         type.erase(type.begin() + idx);
  44.     }
  45.     cout << (int) ans.size() << "\n";
  46.     for(int i = 0; i < ans.size(); i++) {
  47.         cout << ans[i].first << " " << ans[i].second << "\n";
  48.     }
  49.        return 0;
  50. }
  51.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement