Submission #341313

#TimeUsernameProblemLanguageResultExecution timeMemory
341313_aniGift (IZhO18_nicegift)C++17
7 / 100
851 ms30772 KiB
#include <iostream> #include <algorithm> #include <vector> #include <queue> using namespace std; using ll = long long; const int N = 1'000'002; pair<ll,int> a[N]; priority_queue<pair<ll, int>> q; vector<pair<ll, vector<int>>>ans; int main() { ll n, k; ll prv, x = 0; bool ok = true; cin >> n >> k; for (int i = 0; i < n; i++) { prv = x; cin >> x; if (i != 0 && x != prv) ok = false; q.push({ x, i }); } if (ok) { if (n % k == 0) { cout << n / k << '\n'; for (int i = 0; i < n; i+=k) { cout << x << ' '; for (int j = i; j < i + k; j++) cout << j + 1 << ' '; cout << '\n'; } } else if (x % k == 0) { cout << n << '\n'; for (int i = 0; i < n; i++) { cout << x / k << ' '; int j = i; int c = 0; while (c < k) { cout << j + 1 << ' '; j++; if (j >= n) j %= n; c++; } cout << '\n'; } } else cout << -1; } else { while (!q.empty()) { vector<int> cur; if (q.size() < k) { cout << -1; return 0; } for (int i = 0; i < k; i++) { a[i] = q.top(); cur.push_back(a[i].second); q.pop(); } for (int i = 0; i < k - 1; i++) { a[i].first -= a[k - 1].first; if (a[i].first)q.push(a[i]); } ans.push_back({ a[k - 1].first,cur }); } cout << ans.size() << '\n'; for (auto b : ans) { cout << b.first << ' '; sort(b.second.begin(), b.second.end()); for (auto x : b.second) cout << x + 1 << ' '; cout << '\n'; } } return 0; }

Compilation message (stderr)

nicegift.cpp: In function 'int main()':
nicegift.cpp:61:17: warning: comparison of integer expressions of different signedness: 'std::priority_queue<std::pair<long long int, int> >::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   61 |    if (q.size() < k)
      |        ~~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...