Submission #1154076

#TimeUsernameProblemLanguageResultExecution timeMemory
1154076arkanefuryGift (IZhO18_nicegift)C++20
0 / 100
205 ms116552 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define in insert #define lb lower_bound #define F first #define S second #define sz size() #define int long long #define all(v) v.begin(),v.end() #define FOR1(x, n) for(int j = x; j <= n; j ++) #define FOR(x, n, m, d) for(int x = n; x <= m; x += d) #define FORR(x, n, m, d) for(int x = n; x >= m; x -= d) #define nikita ios_base::sync_with_stdio(0), cin.tie(0); const int N = 2e6+5; int a[N], b[N]; int n,m,k,sum=0,x,y, ans, r,pref[N], cnt, l, mod = 1e9+7, cal,lp = 1; bool used[N]; vector<int>g[N], otvet[N], vec; string s, str; long long combination(int n, int k) { if (k > n) return 0; if (k == 0 || k == n) return 1; if (k > n - k) k = n - k; long long result = 1; for (int i = 1; i <= k; ++i) { result *= (n - (k - i)); result /= i; if (result > 3e6) return -1; } return result; } void rec(int k, int pos, int ema = 0){ if(ema == k){ for(auto i : vec)otvet[lp].pb(i); lp ++; return; } FOR(i, pos+1, n, 1){ vec.pb(i); rec(k, i, ema+1); vec.pop_back(); } } void solve(){ cin >> n >> m; sum = 0; FOR(i, 1, n, 1)cin >> a[i], sum += a[i]; if(sum%m){ cout<<-1; return; } if(n%m==0){ x = 1; cout << n/m << '\n'; FOR(i, 1, n/m, 1){ cout << a[1] << ' '; FOR(j, x, x+m-1, 1)cout<<j<<' '; cout<<'\n'; x += m; } return; } k = n % m; k = m - k; x = a[1]; int cnk = combination(m, k); if(cnk==-1){ cout << cnk; return; } if(x%cnk){ cout << -1; return; } rec(k, m-k); if(lp-1+m/2 > 3e6){ cout << -1; return; } cout << lp-1+n/m << '\n'; FOR(i, 1, lp-1, 1){ cout << x / cnk << ' '; FOR(j, 1, m-k, 1)cout << j << ' '; for(auto j : otvet[i]){ cout << j << ' '; a[j] -= x/cnk; } cout << '\n'; } x = m-k+1; FOR(i, 1, n/m, 1){ cout << a[n] << ' '; FOR(j, x, x+m-1, 1)cout << j << ' '; cout<<'\n'; x += m; } } signed main(){ nikita int tt = 1; if(!tt)cin >> tt; FOR(i, 1, tt, 1)solve(); }
#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...