# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
167346 | sans | Turnir (COCI17_turnir) | C++14 | 1789 ms | 38408 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <cstdio>
#include <numeric>
#include <cmath>
#include <algorithm>
#include <vector>
#include <map>
using namespace std;
#define sp ' '
#define st first
#define nd second
#define pb push_back
#define mp make_pair
#define forn(YY, yy) for(long long int yy = 0; yy < YY; ++yy)
#define prn(XX) cout << XX << endl
#define prs(XX) cout << XX << " "
typedef long long int ll;
typedef unsigned long long int ull;
typedef vector<ll> vll;
typedef vector<vector<ll>> vvll;
typedef pair<ll, ll> pll;
typedef vector<pll> vpll;
const int MOD = 1e9 + 7;
const int INF = 2e9 + 13;
const int mINF = -2e9 - 13;
const double PI = 3.14159265358979;
const double EPS = 1e-9;
int main(int argc, char **argv){
int n, N; vector<int> p, u, ps;
scanf("%d", &n); N = 1 << n; p.resize(N); u.resize(n);
for(auto &x: p) scanf("%d", &x); ps = p; sort(ps.begin(), ps.end());
int NN = N; u[0] = 0;
for(int i = 1; i < n; ++i){
NN >>= 1;
u[i] = u[i-1] + NN;
}
map<int, int> ans;
for(int i = 0; i < N; ++i){
int x = ps.end() - upper_bound(ps.begin(), ps.end(), ps[i]);
int l = (lower_bound(u.begin(), u.end(), x) - u.begin());
ans[ps[i]] = l;
}
for(int i = 0; i < N; ++i) printf("%d ", ans[p[i]]);
printf("\n");
return 0;
}
//cikisir
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |