标签:vector accept microsoft ble data play register color oid
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 11946 | Accepted: 7690 |
Description
Input
Output
Sample Input
5 1 2 1 0
Sample Output
2 4 5 3 1
Source
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #include <queue> 6 #include <vector> 7 #define max(a, b) ((a) > (b) ? (a) : (b)) 8 #define min(a, b) ((a) < (b) ? (a) : (b) 9 #define lowbit(x) ((x) & (-1 * (x))) 10 11 inline void read(int &x) 12 { 13 x = 0;char ch = getchar(), c = ch; 14 while(ch < ‘0‘ || ch > ‘9‘)c = ch, ch = getchar(); 15 while(ch <= ‘9‘ && ch >= ‘0‘)x = x * 10 + ch - ‘0‘, ch = getchar(); 16 if(c == ‘-‘)x = -x; 17 } 18 19 const int MAXN = 10000 + 10; 20 21 int n, num[MAXN], bst[MAXN]; 22 23 void modify(int p, int k) 24 { 25 for(;p <= n;p += lowbit(p))bst[p] += k; 26 } 27 28 int ask(int p) 29 { 30 int sum = 0; 31 for(;p;p -= lowbit(p))sum += bst[p]; 32 return sum; 33 } 34 35 int erfen(int ans) 36 { 37 int l = 1, r = n, mid; 38 while(l <= r) 39 { 40 mid = (l + r) >> 1; 41 if(ask(mid) < ans)l = mid + 1; 42 else r = mid - 1; 43 } 44 return l; 45 } 46 47 int main() 48 { 49 read(n); 50 for(register int i = 2;i <= n;++ i) read(num[i]); 51 for(register int i = 1;i <= n;++ i) modify(i, 1); 52 for(register int i = n;i >= 1;-- i) 53 { 54 num[i] = erfen(num[i] + 1); 55 modify(num[i], -1); 56 } 57 for(register int i = 1;i <= n;++ i) printf("%d\n", num[i]); 58 return 0; 59 }
标签:vector accept microsoft ble data play register color oid
原文地址:http://www.cnblogs.com/huibixiaoxing/p/7481765.html