# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
167346 | 2019-12-07T13:00:34 Z | sans | Turnir (COCI17_turnir) | C++14 | 1789 ms | 38408 KB |
#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
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 376 KB | Output is correct |
3 | Correct | 2 ms | 376 KB | Output is correct |
4 | Correct | 5 ms | 504 KB | Output is correct |
5 | Correct | 23 ms | 1284 KB | Output is correct |
6 | Correct | 65 ms | 3320 KB | Output is correct |
7 | Correct | 126 ms | 5112 KB | Output is correct |
8 | Correct | 156 ms | 4572 KB | Output is correct |
9 | Correct | 845 ms | 24312 KB | Output is correct |
10 | Correct | 1789 ms | 38408 KB | Output is correct |