이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define file ""
#define all(x) x.begin(), x.end()
#define sc second
#define fr first
#define right lol
#define left loool
#define pb push_back
#define mp make_pair
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const ll inf = 1e18 + 5;
const ll mod = 1e9 + 7;
const int N = 1e6 + 5;
           
int dx[] = {+1, 0, -1, 0};
int dy[] = {0, +1, 0, -1};  
int b[] = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6};
ll n, k;
ll a[N];
ll sum, pos = -1;
void solve2() {
	vector<vector<int>> ans;
	set<pii> s;
	for (int i = 1; i <= n; i++)
 		s.insert({-a[i], i});
 	while (!s.empty()) {
 		if (s.size() < k) cout << -1, exit(0);
 		int cnt = k;
 		vector<int> cur;
 		vector<pii> build;
 		while (cnt--) {
 			pii x = {s.begin() -> fr, s.begin() -> sc};
 			s.erase(s.begin());
 			cur.pb(x.sc);
 			build.pb({x.fr + 1, x.sc});
 		}
 		for (auto t : build) if (t.fr != 0) s.insert({t.fr, t.sc});
 		ans.pb(cur);
  }		
  cout << ans.size() << endl;
  for (auto t : ans) {
   	cout << 1 << " ";
   	for (int p : t) cout << p << " ";
   	cout << "\n";
  }
  exit(0);
}
void solve3() {
	ll p = n * k / __gcd(n, k);
	ll time_n = p / n;
	ll time_k = p / k;
	if (a[1] % time_n != 0) cout << -1, exit(0);
	ll x = a[1] / time_n;
	int last = 1;
	if (time_k * 1ll * k >= (int) 3e6) cout << -1, exit(0);
	cout << time_k << endl;               	
	for (int i = 1; i <= time_k; i++) {
	 	cout << x << " ";
	 	int cnt = k;
	 	while (cnt--) {
	 		cout << last << " ";
	 		last++;
	 		if (last == n + 1) last = 1;
	 	}
	 	cout << endl;               
	}
}
int main() { 
	cin >> n >> k;
	for (int i = 1; i <= n; i++) {
		cin >> a[i]; 	
		sum += a[i];
	}
	if (sum <= 1e5) solve2();
	else solve3();
  return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
nicegift.cpp: In function 'void solve2()':
nicegift.cpp:42:17: warning: comparison of integer expressions of different signedness: 'std::set<std::pair<int, int> >::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   42 |    if (s.size() < k) cout << -1, exit(0);
      |        ~~~~~~~~~^~~| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |