제출 #334615

#제출 시각아이디문제언어결과실행 시간메모리
334615tengiz05Gift (IZhO18_nicegift)C++17
30 / 100
54 ms13164 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define FASTIO ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); #define all(x) (x).begin(), (x).end() #define pb push_back #define pii pair<int, int> #define ff first #define ss second #define PI acos(-1) #define ld long double const int mod = 1e9+7, N = 2e5+5; int msb(int val){return sizeof(int)*8-__builtin_clzll(val);} int a[N], n, m, k; vector<pii> v[N]; int s[N]; void solve(int test_case){ int i, j; cin >> n >> k; int sum = 0; int mx = 0; for(i=0;i<n;i++){ cin >> a[i]; sum += a[i];mx = max(mx, a[i]); } if(sum%k != 0 || sum < mx*k){ cout << -1 << '\n'; return; } int c = 0; int need = sum/k; for(i=0;i<n;i++){ if(need==s[c]){ c++; } if(need-s[c] >= a[i]){ s[c] += a[i]; // cout << c << ';' << i << ' ' << a[i] << '\n'; v[c].pb({a[i], i+1}); }else { v[c].pb({need-s[c], i+1}); a[i] -= need-s[c]; s[c] = need;i--; } } /* for(i=0;i<k;i++){ cout << "i = " << i << '\n'; for(auto [x,y] : v[i]){ cout << x << ' ' << y << '\n'; }cout << "\n\n"; }*/ vector<vector<int>> ans; int itr = 0; while(true){ itr++; // if(itr>100)break; bool ok = true; for(i=0;i<k;i++)if(v[i].size())ok = false; if(ok)break; int mn = 2e18; for(i=0;i<k;i++){ if(!v[i].size())continue; mn = min(v[i].back().ff, mn); } vector<int> tmp; tmp.pb(mn); for(i=0;i<k;i++){ if(!v[i].size())continue; int lst = v[i].size()-1; v[i][lst].ff -= mn; tmp.pb(v[i][lst].ss); if(v[i][lst].ff == 0)v[i].pop_back(); } ans.pb(tmp); } cout << ans.size() << '\n'; for(auto X : ans){ for(auto x : X)cout << x << ' '; cout << '\n'; } return; } signed main(){ FASTIO; #define MULTITEST 0 #if MULTITEST int ___T; cin >> ___T; for(int T_CASE = 1; T_CASE <= ___T; T_CASE++) solve(T_CASE); #else solve(1); #endif return 0; }

컴파일 시 표준 에러 (stderr) 메시지

nicegift.cpp: In function 'void solve(long long int)':
nicegift.cpp:18:9: warning: unused variable 'j' [-Wunused-variable]
   18 |  int i, j;
      |         ^
#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...