답안 #169399

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
169399 2019-12-20T08:32:19 Z RafaelSus Gift (IZhO18_nicegift) C++14
컴파일 오류
0 ms 0 KB
#include <bits/stdc++.h>
 
using namespace std;
const int N = 1e6 + 5;
typedef long long ll;
const ll inf=1e18+18ll;
#define pb push_back
 
ll n,k;
ll a[N];
/*
void build(int v,int tl,int tr){
  if(tl==tr)t[v]=a[tl],return;
  int tm=(tl+tr)/2;
  build(v+v,tl,tm);
  build(v+v+1,tm+1,tr);
  t[v]=min(t[v+v],t[v+v+1]);
}

void pushdown(int v){
  if(lazy[v]==0)return;
  t[v+v]-=lazy[v];
  t[v+v+1]-=lazy[v];
  lazy[v+v]+=lazy[v];
  lazy[v+v+1]+=lazy[v];
  lazy[v]=0;
}

void update(int v,int tl,int tr,int l,int r,ll d){
  if(l>r)return;
  if(tl>=l&&tr<=r){
    lazy[v]+=d;
    t[v]-=d;
    return;
  }
  pushdown(v);
  int tm=(tl+tr)/2;
  if(l<=tm)update(v+v,tl,tm,l,r,d);
  if(r>tm)update(v+v+1,tm+1,tr,l,r,d);
  t[v]=min(t[v+v],t[v+v+1]);
}

ll query(int v,int tl,int tr,int l,int r){
  if(tl>=l&&tr<=r)return t[v];
  ll res=inf;
  int tm=(tl+tr)/2;
  pushdown(v);
  if(l<=tm)res=min(res,query(v+v,tl,tm,l,r));
  if(r>tm)res=min(res,query(v+v+1,tm+1,tr,l,r));
  return res;
}*/

int main(){
  ios::sync_with_stdio(false);
  cin.tie(0); cout.tie(0);
  ll S=0ll;
  cin>>n>>k;
  priority_queue<pair<ll,int>> q;
  for(int i=0;i<n;i++){
    cin>>a[i];
    q.push({a[i],i});
    S+=a[i];
  }
  if(S%k||q.top().first>S/k){cout<<"-1\n";return 0;}
  S/=k;
  vector<vector<int>> answ;
  ll cnt=0ll;
  while(!q.empty()){
    pair<int,int>tmp[k];
    //if(q.size()<k){cout<<"-1\n";return 0;}
    for(int i=0;i<k;i++){
      tmp[i]=q.top();
      q.pop();
    }
    vector<int> an;
    ll mx=q.size()?q.top.first:0ll;
    ll x=min(tmp[k-1].first,S-mx);
    an.push_back(x);
    for(int i=0;i<k;i++){
      tmp[i].first-=x;
      if(tmp[i].first!=0)q.push(tmp[i]);
      an.push_back(tmp[i].second+1);
    }
    cnt+=(ll)an.size();
    //if(cnt>=3*1e6){cout<<"-1";return 0;}
    answ.push_back(an);
  }
  cout<<answ.size()<<'\n';
  for(int i=0;i<answ.size();i++){
    for(int j=0;j<answ[i].size();j++){
      cout<<answ[i][j]<<' ';
    }
    cout<<'\n';
  }
}

Compilation message

nicegift.cpp: In function 'int main()':
nicegift.cpp:76:22: error: invalid use of member function 'std::priority_queue<_Tp, _Sequence, _Compare>::const_reference std::priority_queue<_Tp, _Sequence, _Compare>::top() const [with _Tp = std::pair<long long int, int>; _Sequence = std::vector<std::pair<long long int, int>, std::allocator<std::pair<long long int, int> > >; _Compare = std::less<std::pair<long long int, int> >; std::priority_queue<_Tp, _Sequence, _Compare>::const_reference = const std::pair<long long int, int>&]' (did you forget the '()' ?)
     ll mx=q.size()?q.top.first:0ll;
                    ~~^~~
nicegift.cpp:76:26: error: expected ':' before 'first'
     ll mx=q.size()?q.top.first:0ll;
                          ^~~~~
nicegift.cpp:76:26: error: 'first' was not declared in this scope
nicegift.cpp:77:33: error: no matching function for call to 'min(int&, ll)'
     ll x=min(tmp[k-1].first,S-mx);
                                 ^
In file included from /usr/include/c++/7/bits/char_traits.h:39:0,
                 from /usr/include/c++/7/ios:40,
                 from /usr/include/c++/7/istream:38,
                 from /usr/include/c++/7/sstream:38,
                 from /usr/include/c++/7/complex:45,
                 from /usr/include/c++/7/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52,
                 from nicegift.cpp:1:
/usr/include/c++/7/bits/stl_algobase.h:195:5: note: candidate: template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)
     min(const _Tp& __a, const _Tp& __b)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:195:5: note:   template argument deduction/substitution failed:
nicegift.cpp:77:33: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'll {aka long long int}')
     ll x=min(tmp[k-1].first,S-mx);
                                 ^
In file included from /usr/include/c++/7/bits/char_traits.h:39:0,
                 from /usr/include/c++/7/ios:40,
                 from /usr/include/c++/7/istream:38,
                 from /usr/include/c++/7/sstream:38,
                 from /usr/include/c++/7/complex:45,
                 from /usr/include/c++/7/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52,
                 from nicegift.cpp:1:
/usr/include/c++/7/bits/stl_algobase.h:243:5: note: candidate: template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)
     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:243:5: note:   template argument deduction/substitution failed:
nicegift.cpp:77:33: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'll {aka long long int}')
     ll x=min(tmp[k-1].first,S-mx);
                                 ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:65,
                 from nicegift.cpp:1:
/usr/include/c++/7/bits/stl_algo.h:3450:5: note: candidate: template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)
     min(initializer_list<_Tp> __l)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3450:5: note:   template argument deduction/substitution failed:
nicegift.cpp:77:33: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
     ll x=min(tmp[k-1].first,S-mx);
                                 ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:65,
                 from nicegift.cpp:1:
/usr/include/c++/7/bits/stl_algo.h:3456:5: note: candidate: template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)
     min(initializer_list<_Tp> __l, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3456:5: note:   template argument deduction/substitution failed:
nicegift.cpp:77:33: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
     ll x=min(tmp[k-1].first,S-mx);
                                 ^
nicegift.cpp:89:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0;i<answ.size();i++){
               ~^~~~~~~~~~~~
nicegift.cpp:90:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int j=0;j<answ[i].size();j++){
                 ~^~~~~~~~~~~~~~~