제출 #1116256

#제출 시각아이디문제언어결과실행 시간메모리
1116256KK_1729Nice sequence (IZhO18_sequence)C++17
100 / 100
1328 ms56708 KiB
#include <bits/stdc++.h>
using namespace std;

// #define int long long 
#define FOR(i,a,b) for (int i = (a); i < (b); ++i)
#define pb push_back
#define all(a) a.begin(), a.end()
#define endl "\n"

void printVector(vector<int> a){
    for (auto x: a) cout << x << " ";
    cout << endl;
}

vector<int> possible(int x, int n, int m){
    vector<vector<int>> graph(x+1); // edge from i to j iff pref[i] < pref[j]
    vector<int> indeg(x+1);
    for (int i = m; i <= x; ++i){
        graph[i-m].pb(i);
        indeg[i] = 1;
    }

    for (int i = n; i <= x; ++i){
        graph[i].pb(i-n);
        indeg[i-n] = 1;
    }

    int val = 1;
    vector<int> visited(x+1);
    vector<int> prefix(x+1);
    stack<int> s;
    FOR(i,0,x+1){
        if (indeg[i] == 0){
            s.push(i);
        }
    }
    if (s.empty()){
        return {};
    }
        while (!s.empty()){
            int current = s.top();
            s.pop();
            if (visited[current]){
                return {};
            }
            prefix[current] = val;
            val++;
            for (auto item: graph[current]){
                s.push(item);
            }
            visited[current] = 1;
        }

    FOR(i,0,x+1){
        if (!visited[i]) return {};
    }
    
    return prefix;
}
void solve(){
    int n, m; cin >> n >> m;

    int l = 0; int r = 500000;
    vector<int> best = possible(n+m-__gcd(n, m)-1, n, m);
    

    cout << best.size()-1 << endl;
    FOR(i,1,best.size()) cout << best[i]-best[i-1] << " ";
    cout << endl;
}
int32_t main(){
    ios::sync_with_stdio(false);cin.tie(nullptr);
    int t = 1; cin >> t;
    while (t--) solve();
}

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

sequence.cpp: In function 'void solve()':
sequence.cpp:5:40: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    5 | #define FOR(i,a,b) for (int i = (a); i < (b); ++i)
      |                                        ^
sequence.cpp:68:5: note: in expansion of macro 'FOR'
   68 |     FOR(i,1,best.size()) cout << best[i]-best[i-1] << " ";
      |     ^~~
sequence.cpp:63:9: warning: unused variable 'l' [-Wunused-variable]
   63 |     int l = 0; int r = 500000;
      |         ^
sequence.cpp:63:20: warning: unused variable 'r' [-Wunused-variable]
   63 |     int l = 0; int r = 500000;
      |                    ^
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...