제출 #891995

#제출 시각아이디문제언어결과실행 시간메모리
891995alexander707070Cookies (JOI23_cookies)C++14
63 / 100
49 ms399752 KiB
#include<bits/stdc++.h> #define MAXN 507 using namespace std; int n,m,pt,total; int a[MAXN],b[MAXN],ind[MAXN]; vector< pair<int,int> > v; vector< vector<int> > w; int maxs[MAXN],br; bool li[MAXN][MAXN][MAXN]; int dp[MAXN][MAXN][MAXN]; int ff(int pos,int box,int sum){ if(sum<0 or box<1)return 1000000; if(sum==0)return 0; if(li[pos][box][sum])return dp[pos][box][sum]; li[pos][box][sum]=true; dp[pos][box][sum]=ff(pos,box-1,sum); if(total-sum+b[box]<=maxs[pos]){ dp[pos][box][sum]=min(dp[pos][box][sum],ff(pos+1,box,sum-b[box])+1); } return dp[pos][box][sum]; } void solve(int pos,int box,int sum){ if(sum==0)return; if(ff(pos,box,sum)==ff(pos,box-1,sum)){ solve(pos,box-1,sum); return; } br++; v.push_back({b[box],br}); solve(pos+1,box,sum-b[box]); } bool cmp(int x,int y){ return a[x]>a[y]; } int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; total+=a[i]; ind[i]=i; } for(int i=1;i<=total;i++){ for(int f=1;f<=n;f++){ maxs[i]+=min(a[f],i); } } cin>>m; for(int i=1;i<=m;i++){ cin>>b[i]; } if(ff(1,m,total)>total){ cout<<"-1\n"; return 0; } solve(1,m,total); w.resize(int(v.size())); sort(ind+1,ind+n+1,cmp); for(int i=1;i<=n;i++){ sort(v.begin(),v.end()); reverse(v.begin(),v.end()); for(int f=0;f<a[ind[i]];f++){ v[f].first--; w[v[f].second-1].push_back(ind[i]); } } cout<<w.size()<<"\n"; for(int i=0;i<w.size();i++){ cout<<w[i].size()<<" "; for(int f:w[i])cout<<f<<" "; cout<<"\n"; } return 0; }

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

cookies.cpp: In function 'int main()':
cookies.cpp:87:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   87 |     for(int i=0;i<w.size();i++){
      |                 ~^~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...