fork download
  1. //NiceDuck
  2. #include "bits/stdc++.h"
  3. typedef long long ll;
  4. using namespace std;
  5. #define FILE "000"
  6. #define foru(i,a,b) for(int i=(int)(a); i<=(int)(b); ++i)
  7. #define ford(i,a,b) for(int i=(int)(a); i>=(int)(b); --i)
  8. #define fastio ios_base::sync_with_stdio(0);cin.tie(0);
  9. #define pb push_back
  10. #define fi first
  11. #define se second
  12. #define pii pair<int,int>
  13. #define pil pair<int,ll>
  14. #define pli pair<ll,int>
  15. #define MOD 1000000007
  16. #define el "\n"
  17.  
  18. const int MAX=102;
  19. int n,w,ans[MAX];
  20. pii a[MAX];
  21.  
  22. int main()
  23. {
  24. fastio
  25. #ifndef ONLINE_JUDGE
  26. freopen(FILE ".inp","r",stdin);
  27. freopen(FILE ".out","w",stdout);
  28. #endif // ONLINE_JUDGE
  29.  
  30. cin>>n>>w;
  31. foru(i,1,n)
  32. {
  33. cin>>a[i].fi;
  34. a[i].se=i;
  35. }
  36. sort(a+1,a+n+1);
  37. foru(i,1,n)
  38. {
  39. int need=ceil((double)a[i].fi/2);
  40. if(w<need)
  41. {
  42. cout<<-1;
  43. return 0;
  44. }
  45. w-=need;
  46. ans[a[i].se]=need;
  47. }
  48. ford(i,n,1)
  49. {
  50. int du=a[i].fi-ans[a[i].se];
  51. if(du==0) continue;
  52. if(w>du)
  53. {
  54. ans[a[i].se]+=du;
  55. w-=du;
  56. }
  57. else
  58. {
  59. ans[a[i].se]+=w;
  60. break;
  61. }
  62. }
  63. foru(i,1,n) cout<<ans[i]<<' ';
  64.  
  65. return 0;
  66. }
Success #stdin #stdout 0s 5284KB
stdin
Standard input is empty
stdout
Standard output is empty