C - 座圧
問題
考察
入力されるaを小さいもの順に並べる。
mapを使うことで、その数字が配列の中で何番目の大きさかを判定してあげればよき。
実装
#include <iostream> #include <map> #include <algorithm> #include <vector> #define ll long long using namespace std; ll l = 1000000007; vector <ll> a[100050] = {}; vector <ll> b[100050] = {}; int main() { map<ll, ll> mp; ll n; cin >> n; for (ll i = 0; i < n; i++) { ll x; cin >> x; a->push_back(x); b->push_back(x); } sort(b->begin(), b->end()); b->erase(unique(b->begin(), b->end()), b->end()); for (ll i = 0; i < b->size(); i++) { mp[b->at(i)] = i; } for (ll i = 0; i < n; i++) { cout << mp[a->at(i)] << endl; } }