Submission #131152

#TimeUsernameProblemLanguageResultExecution timeMemory
131152VardanyanToys (CEOI18_toy)C++14
79 / 100
5060 ms50636 KiB
#include <bits/stdc++.h> using namespace std; map<int,int> s; map<pair<int,int>,int> mp; vector<int> ans; vector<int> divs[1000*100+1]; void rec(int n,int sm){ if(mp[{n,sm}]) return; mp[{n,sm}] = 1; if(n == 1){ if(!s[sm]){ ans.push_back(sm); s[sm] = 1; } return; } if(n>1000*100 || divs[n].size() == 0){ for(int i = 1;i*i<=n;i++){ if(n%i) continue; if(i>1){ rec(n/i,sm+i-1); if(n<=100000) divs[n].push_back(i); } int x = n/i; rec(n/x,sm+x-1); if(n<=100000) divs[n].push_back(x); } } else{ for(int i = 0;i<divs[n].size();i++){ int x = divs[n][i]; rec(n/x,sm+x-1); } } } int main(){ ios_base::sync_with_stdio(false); int n; cin>>n; rec(n,0); cout<<ans.size()<<endl; sort(ans.begin(),ans.end()); for(int i = 0;i<ans.size();i++) cout<<ans[i]<<" "; cout<<endl; return 0; }

Compilation message (stderr)

toy.cpp: In function 'void rec(int, int)':
toy.cpp:30:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i = 0;i<divs[n].size();i++){
                       ~^~~~~~~~~~~~~~~
toy.cpp: In function 'int main()':
toy.cpp:43:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0;i<ans.size();i++) cout<<ans[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...