Submission #957104

#TimeUsernameProblemLanguageResultExecution timeMemory
957104Darren0724Gift (IZhO18_nicegift)C++17
100 / 100
736 ms84296 KiB
#include <bits/stdc++.h> using namespace std; #define LCBorz ios_base::sync_with_stdio(false); cin.tie(0); #define int long long #define all(x) x.begin(), x.end() #define endl '\n' const int N=200005; const int INF=1e18; const int mod=1e9+7; int32_t main() { LCBorz; int n,k;cin>>n>>k; vector<int> v(n+1); priority_queue<pair<int,int>> pq; int total=0; for(int i=1;i<=n;i++){ cin>>v[i]; pq.push({v[i],i}); total+=v[i]; } vector<vector<int>> ans; while(pq.size()>=k){ int mn=0; vector<int> t; for(int i=0;i<k;i++){ auto [a,b]=pq.top(); pq.pop(); mn=a; t.push_back(b); } int mx=(pq.size()?pq.top().first:0); int left=total-mx; int cost=min(mn,(left-(k-1)*mx)/k); for(int j:t){ v[j]-=cost; if(v[j]>0)pq.push({v[j],j}); } total-=cost*k; t.push_back(cost); reverse(all(t)); ans.push_back(t); } if(pq.size()!=0){ cout<<-1<<endl; return 0; } cout<<ans.size()<<endl; for(auto v:ans){ for(int j:v){ cout<<j<<' '; } cout<<endl; } return 0; }

Compilation message (stderr)

nicegift.cpp: In function 'int32_t main()':
nicegift.cpp:23:20: warning: comparison of integer expressions of different signedness: 'std::priority_queue<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   23 |     while(pq.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...