第一题 #include <bits/stdc++.h> using namespace std; const int N = 100010; int a[N]; int main(){ int n, k; scanf("%d%d", &n, &k); int cnt = 1, sum = 0; while(n > 1 && k > 0){ if(k >= cnt)k -= cnt; else break; sum += 1; n = (n + 1) / 2; // printf("%d %d %d %d\n", n, k, sum, cnt); cnt *= 2; } printf("%d\n", sum + n); } 第三题 #include <bits/stdc++.h> using namespace std; const int N = 100010; int a[N]; int main(){ int n, k; scanf("%d%d", &n, &k); for(int i = 0; i < n; i++){ scanf("%d", &a[i]); } sort(a, a + n); int cnt = 0, sum = 0; for(int i = 0; i < n; i++){ int x = a[i] - sum; if(x == 0)continue; if(cnt >= k)break; printf("%d\n", x); sum += x; cnt += 1; } while(cnt < k){ printf("0\n"); cnt++; } } 第二题不是数组前缀和的绝对值么,为啥只过了70%?
点赞 4

相关推荐

牛客868257804号:九个中铁八个中建
点赞 评论 收藏
分享
牛客网
牛客企业服务