diff options
| author | omagdy7 <omar.professional8777@gmail.com> | 2023-07-24 13:11:33 +0300 |
|---|---|---|
| committer | omagdy7 <omar.professional8777@gmail.com> | 2023-07-24 13:11:33 +0300 |
| commit | 6b548332bfc6469756526002971c422f43f86d0a (patch) | |
| tree | 261fde23f07c3e20cea375030f0c52863b59228c /contests/Round828/Round#828/C/main.cpp | |
| parent | cff8cae22ee9c25d193ff976143813f93e658e55 (diff) | |
| download | competitive-programming-6b548332bfc6469756526002971c422f43f86d0a.tar.xz competitive-programming-6b548332bfc6469756526002971c422f43f86d0a.zip | |
Removed some empty *.cpp files and Solved some new problems
Diffstat (limited to 'contests/Round828/Round#828/C/main.cpp')
| -rwxr-xr-x | contests/Round828/Round#828/C/main.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/contests/Round828/Round#828/C/main.cpp b/contests/Round828/Round#828/C/main.cpp new file mode 100755 index 0000000..a69f265 --- /dev/null +++ b/contests/Round828/Round#828/C/main.cpp @@ -0,0 +1,48 @@ +#include<bits/stdc++.h> + +using namespace std; + +int main () { + ios_base::sync_with_stdio(false); + cin.tie(NULL); + int tt; + cin >> tt; + while(tt--) { + int n; + cin >> n; + int m = 0, mx = 0; + for (int i = 0; i < n; i++) { + int x; + cin >> x; + while (x % 2 == 0) { + x /= 2; + m += 1; + } + } + if (m >= n) { + cout << 0 << '\n'; + } else { + int d = n - m, ans = 0; + vector<int> a; + for (int i = n; i >= 1; i--) { + int j = i, cnt = 0; + while (j % 2 == 0) { + cnt += 1; + j /= 2; + } + if (cnt != 0) { + a.push_back(cnt); + } + } + sort(a.rbegin(), a.rend()); + for (int i = 0; i < (int)a.size(); i++) { + ans += 1; + d -= a[i]; + if (d <= 0) { + break; + } + } + cout << (d <= 0 ? ans : -1) << '\n'; + } + } +} |
