Submission #346865

#TimeUsernameProblemLanguageResultExecution timeMemory
346865impetus_Gift (IZhO18_nicegift)C++14
0 / 100
2078 ms16152 KiB
#include <bits/stdc++.h> #define mp make_pair #define pb push_back #define f first #define s second #define ll long long #define int ll #define forn(i, a, b) for(int i = (a); i <= (b); ++i) #define forev(i, b, a) for(int i = (b); i >= (a); --i) #define VAR(v, i) __typeof( i) v=(i) #define forit(i, c) for(VAR(i, (c).begin()); i != (c).end(); ++i) #define all(x) (x).begin(), (x).end() #define sz(x) ((int)(x).size()) #define file(s) freopen(s".in","r",stdin); freopen(s".out","w",stdout); using namespace std; const int maxn = (int)1e6 + 10; const int mod = (int)1e9 + 7; const int P = (int) 1e6 + 7; const double pi = acos(-1.0); #define inf mod typedef long double ld; typedef pair<int, int> pii; typedef pair<ll, ll> pll; typedef vector<int> vi; typedef vector<ll> Vll; typedef vector<pair<int, int> > vpii; typedef vector<pair<ll, ll> > vpll; typedef array<int, 3> triple; int n, k, sum, mx; pii a[maxn]; inline void solve(){ scanf("%lld%lld", &n, &k); forn(i, 1, n) { scanf("%lld", &a[i].f); a[i].s = i; sum += a[i].f; mx = max(mx, a[i].f); } if(sum % k || sum / k < mx){ puts("-1"); return; } vector<pair<int, vi> > path; while(1){ sort(a + 1, a + n + 1); reverse(a + 1, a + n + 1); if(!a[1].f) break; int l = 1, r = (int)1e18, res = -1; while(l <= r){ int mid = (l + r) >> 1; int curS = sum - mid * mid, mx = max(a[k + 1].f, a[1].f - mid); if(curS / k >= mx){ res = mid; l = mid + 1; }else r = mid - 1; } assert(res != -1); vi cur; forn(i, 1, k) a[i].f -= res, cur.pb(a[i].s); sum -= res * k; path.pb({res, cur}); } printf("%lld\n", sz(path)); for(auto x : path){ printf("%lld ", x.f); for(auto it : x.s) printf("%lld ", it); puts(""); } } main () { int t = 1; //scanf("%d", &t); while(t--) solve(); }

Compilation message (stderr)

nicegift.cpp:78:7: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   78 | main () {
      |       ^
nicegift.cpp: In function 'void solve()':
nicegift.cpp:39:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   39 |   scanf("%lld%lld", &n, &k);
      |   ~~~~~^~~~~~~~~~~~~~~~~~~~
nicegift.cpp:41:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   41 |     scanf("%lld", &a[i].f);
      |     ~~~~~^~~~~~~~~~~~~~~~~
#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...