fork download
  1. #include<bits/stdc++.h>
  2. #include<unordered_map>
  3. #pragma GCC target ("avx2")
  4. #pragma GCC optimization ("O3")
  5. #pragma GCC optimization ("unroll-loops")
  6. #define endl '\n'
  7. #define Ceil(x,y) ((x+y-1)/y)
  8. #define sz(s) (int)s.size()
  9. #define RT(x) return cout<<x,0;
  10. #define mem(x,y) memset(x,y,sizeof(x))
  11. #define all(v) ((v).begin()), ((v).end())
  12. #define vi vector<int>
  13. #define pii pair<int,int>
  14. #define watch(x) cout<<(#x)<<" = "<<x<<endl
  15. #define forr(i, n) for (int i = 0; i < int(n); i++)
  16. int dx[] = { 0, 0, 1, -1, 1, -1, 1, -1 };
  17. int dy[] = { 1, -1, 0, 0, -1, 1, 1, -1 };
  18. const double PI = acos(-1), EPS = 1e-7;
  19. const int OO = 0x3f3f3f3f, N = 1e7 + 5, mod = 1e9 + 7;
  20. using namespace std;
  21. typedef long long ll;
  22. typedef unsigned long long ull;
  23. ll gcd(ll x, ll y) { return (!y) ? x : gcd(y, x%y); }
  24. ll lcm(ll x, ll y) { return ((x / gcd(x, y))*y); }
  25. void mansour()
  26. {
  27. std::ios_base::sync_with_stdio(0);
  28. cin.tie(NULL);
  29. cout.tie(NULL);
  30. }
  31. void file()
  32. {
  33. #ifndef ONLINE_JUDGE
  34. freopen("input.txt" , "r" , stdin) ;
  35. freopen("output.txt" , "w" , stdout) ;
  36. #endif
  37. }
  38. void ciel_floor(double x)
  39. {
  40. printf ( "ceil of 2.3 is %.1f\n", ceil(2.3) );//3
  41. printf ( "floor of 2.3 is %.1lf\n", floor (2.3) );//2
  42. }
  43. bool odd[200005];
  44. int main()
  45. {
  46. mansour();
  47. file();
  48. /*7llly ya gazmaaaaaa*/
  49. //298966RN
  50. int n,a[200005],sum=0;
  51. cin>>n;
  52. vector<int>v;
  53. for(int i=0;i<n;i++)
  54. {
  55. cin>>a[i];
  56. if(a[i]&1)
  57. v.push_back(i);
  58. if(a[i]==-1)
  59. odd[i]=1;
  60. a[i]/=2;
  61. sum+=a[i];
  62. }
  63. if(sum>0)
  64. {
  65. for(int i=0;i<sz(v);i++)
  66. {
  67. if(!sum)
  68. break;
  69. if(a[v[i]]<0)
  70. a[v[i]]--;
  71. else if(a[v[i]]>0)
  72. a[v[i]]++;
  73. else if(a[v[i]]==0)
  74. {
  75. if(odd[v[i]])
  76. a[v[i]]--;
  77. else
  78. a[v[i]]++;
  79. }
  80. sum--;
  81. }
  82. }
  83. else if(sum<0)
  84. {
  85. for(int i=0;i<sz(v);i++)
  86. {
  87. if(!sum)
  88. break;
  89. if(a[v[i]]<0)
  90. a[v[i]]--;
  91. else if(a[v[i]]>0)
  92. a[v[i]]++;
  93. else if(a[v[i]]==0)
  94. {
  95. if(odd[v[i]])
  96. a[v[i]]--;
  97. else
  98. a[v[i]]++;
  99. }
  100. sum++;
  101. }
  102. }
  103. for(int i=0;i<n;i++)
  104. cout <<a[i]<<"\n";
  105. }
Success #stdin #stdout 0s 4184KB
stdin
Standard input is empty
stdout
Standard output is empty