Advertisement
Guest User

Ilya ( Mars )

a guest
Oct 18th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.49 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <vector>
  4. #include <set>
  5. #include <queue>
  6. #include <map>
  7. #include <string>
  8. #include <cmath>
  9. #include <functional>
  10. #include <algorithm>
  11. #include <utility>
  12. #include <stack>
  13. #include <unordered_map>
  14. #include <iterator>
  15. #define paii pair<ll,ll>
  16. #define ll long long
  17. using namespace std;
  18.  
  19. int main()
  20. {
  21.     ios_base::sync_with_stdio(0);
  22.     cin.tie(0), cout.tie(0);
  23.    
  24.     int n; cin >> n;
  25.     map <int, int> o;
  26.     map <int, int > l;
  27.     map <int, int> r;
  28.     for (int i = 0; i < n; ++i)
  29.     {
  30.         int x; cin >> x;
  31.         if (i + 1 - x <= 0) return cout << "NO", 0;
  32.         o[i + 1] += x;
  33.         l[i + 1] = x;
  34.     }
  35.     for (int i = 0; i < n; ++i)
  36.     {
  37.         int x; cin >> x;
  38.         if (i+1 + x > n) return cout << "NO", 0;
  39.         o[i + 1] += x;
  40.         r[i + 1] = x;
  41.     }
  42.     vector < pair<int,int> > vec;
  43.     vector <int> line(n+1);
  44.     for (auto el : o)
  45.     {
  46.         vec.push_back(make_pair(el.first, el.second));
  47.     }
  48.     sort(vec.begin(), vec.end(), [](auto x, auto x1) {return x.second > x1.second; });
  49.     int ct = 0 , pred = -1;
  50.     for (auto el : vec)
  51.     {
  52.         if (pred != el.second)  ++ct;
  53.         line[el.first] = ct;
  54.         pred = el.second;
  55.     }
  56.     for (int i = 1; i <= n; ++i)
  57.     {
  58.         int co = 0 , cod = 0;
  59.         for (int j = i; j <= n; ++j)
  60.         {
  61.             if (line[j] > line[i]) ++co;
  62.         }
  63.         for (int j = i; j >= 1; --j)
  64.         {
  65.             if (line[j] > line[i]) ++cod;
  66.         }
  67.         if (co != r[i] || cod != l[i]) return cout << "NO", 0;
  68.     }
  69.     cout << "YES" << endl;
  70.     for (auto el : line)
  71.     {
  72.         if ( el != 0)
  73.         cout << el << " ";
  74.     }
  75.     return 0; //||
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement