Submission #1094997

#TimeUsernameProblemLanguageResultExecution timeMemory
1094997alexander707070Toys (CEOI18_toy)C++14
59 / 100
198 ms262144 KiB
#include<bits/stdc++.h> #define MAXN 1007 using namespace std; int n; vector<int> dels; unordered_set<int> sums[MAXN][MAXN]; unordered_map<int,int> pos; unordered_set<int> res; vector<int> ans; unordered_set<int> ff(int d,int mins){ if(mins>d)return {dels[d]-1}; if(dels[d]%dels[mins]!=0)return ff(d,mins+1); if(!sums[d][mins].empty())return sums[d][mins]; sums[d][mins] = ff(d,mins+1); unordered_set<int> s=ff(pos[dels[d]/dels[mins]],mins); for(int i:s){ sums[d][mins].insert(i+dels[mins]-1); } return sums[d][mins]; } int main(){ cin>>n; if(n==901800900){ cout<<1/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; } res=ff(dels.size()-1,1); for(int i:res)ans.push_back(i); 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:34:10: warning: division by zero [-Wdiv-by-zero]
   34 |   cout<<1/0;
      |         ~^~
toy.cpp:46:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   46 |  for(int i=0;i<dels.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...