제출 #986011

#제출 시각아이디문제언어결과실행 시간메모리
986011raphaelpToys (CEOI18_toy)C++14
79 / 100
5008 ms108332 KiB
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int N;
    cin >> N;
    if (N == 1)
    {
        cout << 1 << '\n'
             << 0;
        return 0;
    }
    vector<int> div;
    for (int i = 2; i <= sqrt(N); i++)
    {
        if (N % i == 0)
        {
            div.push_back(i);
            if (i != N / i)
                div.push_back(N / i);
        }
    }
    div.push_back(N);
    sort(div.begin(), div.end());
    vector<vector<int>> pos(div.size());
    for (int i = 0; i < div.size(); i++)
        pos[i].push_back(div[i] - 1);
    for (int i = 0; i < div.size(); i++)
    {
        for (int j = 0; div[j] <= sqrt(div[i]); j++)
        {
            int x = lower_bound(div.begin(), div.end(), div[i] / div[j]) - div.begin();
            if (div[j] * div[x] != div[i])
                continue;
            for (int k = 0; k < pos[j].size(); k++)
            {
                for (int l = 0; l < pos[x].size(); l++)
                {
                    pos[i].push_back(pos[j][k] + pos[x][l]);
                }
            }
        }
        sort(pos[i].begin(), pos[i].end());
        vector<int> temp = {pos[i][0]};
        for (int j = 1; j < pos[i].size(); j++)
            if (pos[i][j] != pos[i][j - 1])
                temp.push_back(pos[i][j]);
        swap(temp, pos[i]);
    }
    cout << pos[pos.size() - 1].size() << '\n';
    for (int i = 0; i < pos[pos.size() - 1].size(); i++)
    {
        cout << pos[pos.size() - 1][i] << ' ';
    }
}

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

toy.cpp: In function 'int main()':
toy.cpp:26:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |     for (int i = 0; i < div.size(); i++)
      |                     ~~^~~~~~~~~~~~
toy.cpp:28:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |     for (int i = 0; i < div.size(); i++)
      |                     ~~^~~~~~~~~~~~
toy.cpp:35:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |             for (int k = 0; k < pos[j].size(); k++)
      |                             ~~^~~~~~~~~~~~~~~
toy.cpp:37:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |                 for (int l = 0; l < pos[x].size(); l++)
      |                                 ~~^~~~~~~~~~~~~~~
toy.cpp:45:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |         for (int j = 1; j < pos[i].size(); j++)
      |                         ~~^~~~~~~~~~~~~~~
toy.cpp:51:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |     for (int i = 0; i < pos[pos.size() - 1].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...