Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #include <ext/pb_ds/assoc_container.hpp>
- #define all(a) a.begin(), a.end()
- #define F first
- #define S second
- #define $ ios::sync_with_stdio(0);
- #define endl "\n"
- #define SEEN 1
- //#define int long long int
- using namespace std;
- using namespace __gnu_pbds;
- using ll = long long int;
- using ii = pair<int, int>;
- using vi = vector<int>;
- using vii = vector<ii>;
- using graph = vector<vii>;
- using ordered_mset = tree<ii, null_type, less<ii>, rb_tree_tag, tree_order_statistics_node_update>;
- using ordered_set = tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>;
- mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
- const ll mod = 1000000007;
- const int INF = 0x3f3f3f3f;
- const int MAXN = 200050;
- const double pi = 3.14159265359;
- const double eps = 0.00000001;
- //int map_skill[MAXN];
- int ans[MAXN];
- int main() {
- //ios::sync_with_stdio(0);
- int n, k;
- cin >> n >> k;
- map<int, int> map_skill;
- vii skill;
- graph squar(n+1);
- for (int i = 1, a; i <= n; i++) {
- cin >> a;
- skill.push_back({a, i});
- }
- for (int i = 0, a,b; i < k; i++) {
- //cout << i << endl;
- cin >> a >> b;
- // cout << "u: " << a << " v: " << b << endl;
- squar[a].push_back({b, skill[b-1].first});
- squar[b].push_back({a, skill[a-1].first});
- // cout << a << "->" << b << ": " << skill[b-1].first << endl;
- // cout << b << "->" << a << ": " << skill[a-1].first << endl;
- }
- //cout << "ok\n";
- sort(skill.begin(), skill.end());
- for(int i = 0, cur; i < n; i++) {
- cur = skill[i].second;
- map_skill[skill[i].first]++;
- ans[cur] = i;
- // cout << "ans1: " << ans[cur] << endl;
- ans[cur] -= map_skill[skill[i].first]-1;
- //cout << "ans2: " << ans[cur] << endl;
- for(auto a : squar[cur]) {
- if(a.second < skill[i].first)
- ans[cur]--;
- }
- ans[cur] = max(ans[cur], 0);
- }
- //cout << "ok2\n";
- for (int i = 1; i <= n; i++) {
- cout << ans[i] << ' ';
- }
- cout << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment