fork download
  1. //Mặc định
  2. #include <bits/stdc++.h>
  3. #define Nhanh ios_base::sync_with_stdio(0); cin.tie(0);
  4. #define NhapT int T; cin >> T; for(int iT = 0; iT < T; ++iT)
  5. #define YES cout << "YES\n";
  6. #define NO cout << "NO\n";
  7. using namespace std;
  8. int n;
  9. int gtr(pair <int, int> a) {
  10. return a.first + min(a.second, n + 1 - a.second);
  11. }
  12. int gtr0(pair <int, int> a) {
  13. return a.first + a.second;
  14. }
  15. bool comp(pair <int, int> a, pair <int, int> b) {
  16. return gtr(a) < gtr(b);
  17. }
  18. int main() {
  19. Nhanh
  20.  
  21. int kq, tien, i;
  22. cin >> n >> tien;
  23. vector <pair <int, int> > quan(n);
  24. for(i = 0; i < n; ++i) {
  25. cin >> quan[i].first;
  26. quan[i].second = i + 1;
  27. }
  28. sort(quan.begin(), quan.end(), comp);
  29. bool dung = 0;
  30. for(i = 0; i < n && tien - gtr(quan[i]) > 0; ++i) {
  31. tien -= gtr(quan[i]);
  32. if(!dung && quan[i].second < (n + 1)/2) {
  33. dung = 1;
  34. }
  35. }
  36. kq = i;
  37. if(!dung && kq != 0) {
  38. int dem1, dem2, th1, th2, x;
  39. x = INT_MAX;
  40. for(i = kq; i < n; ++i) {
  41. x = min(x, gtr0(quan[i]));
  42. }
  43. th1 = tien - x;
  44. for(dem1 = kq - 1; dem1 >= 0 && th1 < 0; --dem1) {
  45. th1 += gtr(quan[dem1]);
  46. }
  47. x = INT_MAX;
  48. for(i = 0; i < kq; ++i) {
  49. x = min(x, quan[i].second);
  50. }
  51. th2 = tien + n + 1 - x * 2;
  52. for(dem2 = kq - 1; dem2 >= 0 && th2 < 0; --dem2) {
  53. th2 += gtr(quan[dem2]);
  54. }
  55. kq = max(dem1, dem2) + 1;
  56. }
  57. cout << kq;
  58. return 0;
  59. }
Success #stdin #stdout 0s 5296KB
stdin
Standard input is empty
stdout
Standard output is empty