Submission #654055

#TimeUsernameProblemLanguageResultExecution timeMemory
654055MasterTasterToys (CEOI18_toy)C++14
100 / 100
1881 ms33460 KiB
#include <iostream> #include <vector> #include <algorithm> #include <map> #define ll long long #define pb push_back using namespace std; ll n; vector<ll> svi, ress; void dfs(ll x, vector<ll> &d, ll i, ll sum) { if (x==1) return; ress.pb(sum+x-1); vector<ll> dd; while (i<d.size()) { if (x%d[i]==0) dd.pb(d[i]); i++; } for (int i=0; i<dd.size(); i++) { if (x/dd[i]>=dd[i]) dfs(x/dd[i], dd, i, sum+dd[i]-1); } } map<ll, bool> bio; int main() { cin>>n; if (n==1) { cout<<1<<endl<<0; exit(0); } for (ll i=2; i*i<=n; i++) if (n%i==0) svi.pb(i); dfs(n, svi, 0, 0); vector<ll> r; for (int i=0; i<ress.size(); i++) if (!bio[ress[i]]) { bio[ress[i]]=true; r.pb(ress[i]); } cout<<r.size()<<endl; sort(r.begin(), r.end()); for (int i=0; i<r.size(); i++) cout<<r[i]<<" "; }

Compilation message (stderr)

toy.cpp: In function 'void dfs(long long int, std::vector<long long int>&, long long int, long long int)':
toy.cpp:20:13: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |     while (i<d.size())
      |            ~^~~~~~~~~
toy.cpp:26:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |     for (int i=0; i<dd.size(); i++)
      |                   ~^~~~~~~~~~
toy.cpp: In function 'int main()':
toy.cpp:45:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |     for (int i=0; i<ress.size(); i++) if (!bio[ress[i]]) { bio[ress[i]]=true; r.pb(ress[i]); }
      |                   ~^~~~~~~~~~~~
toy.cpp:49:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |     for (int i=0; i<r.size(); i++) cout<<r[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...