Submission #1095018

#TimeUsernameProblemLanguageResultExecution timeMemory
1095018alexander707070Toys (CEOI18_toy)C++14
100 / 100
1485 ms24520 KiB
#include<bits/stdc++.h> #define MAXN 2007 using namespace std; int n; vector<int> dels; vector<int> sums[MAXN][2]; unordered_map<int,int> pos; vector<int> res; vector<int> ans; unordered_map<int,int> li; int tim; void ff(int d,int mins){ if(mins>d){ sums[d][mins]={dels[d]-1}; return; } if(!sums[d][mins].empty())return; ff(d,mins+1); sums[d][mins]=sums[d][mins+1]; if(dels[d]%dels[mins]==0){ int x=pos[dels[d]/dels[mins]]; ff(x,mins); tim++; for(int i:sums[d][mins])li[i]=tim; for(int i:sums[x][mins]){ if(li[i+dels[mins]-1]==tim)continue; li[i+dels[mins]-1]=tim; sums[d][mins].push_back(i+dels[mins]-1); } } } int main(){ cin>>n; if(n==1){ cout<<1<<"\n"<<0<<"\n"; return 0; } for(int i=1;i*i<=n;i++){ if(n%i!=0)continue; dels.push_back(i); if(i!=n/i)dels.push_back(n/i); } sort(dels.begin(),dels.end()); for(int i=0;i<dels.size();i++){ pos[dels[i]]=i; } for(int mins=dels.size()-1;mins>=1;mins--){ for(int d=0;d<dels.size();d++){ if(mins>d){ sums[d][mins%2]={dels[d]-1}; continue; } sums[d][mins%2]=sums[d][1-mins%2]; if(dels[d]%dels[mins]==0){ int x=pos[dels[d]/dels[mins]]; tim++; for(int i:sums[d][mins%2])li[i]=tim; for(int i:sums[x][mins%2]){ if(li[i+dels[mins]-1]==tim)continue; li[i+dels[mins]-1]=tim; sums[d][mins%2].push_back(i+dels[mins]-1); } } } } ans=sums[dels.size()-1][1]; sort(ans.begin(),ans.end()); cout<<ans.size()<<"\n"; for(int i:ans){ cout<<i<<" "; } cout<<"\n"; return 0; }

Compilation message (stderr)

toy.cpp: In function 'int main()':
toy.cpp:61:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |  for(int i=0;i<dels.size();i++){
      |              ~^~~~~~~~~~~~
toy.cpp:66:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   66 |   for(int d=0;d<dels.size();d++){
      |               ~^~~~~~~~~~~~
#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...