Submission #376076

# Submission time Handle Problem Language Result Execution time Memory
376076 2021-03-10T20:28:31 Z ijxjdjd Nice sequence (IZhO18_sequence) C++14
Compilation error
0 ms 0 KB
#include <bits/stdc++.h>
#define FR(i, N) for (int i = 0; i < int(N); i++)
#define all(x) begin(x), end(x)

using namespace std;

using ll = long long;

int getrandom()() {
    return rand()%10000 + 1;
}
int main() {
	cin.tie(0);
	cin.sync_with_stdio(0);
	int T;
	cin >> T;
	FR(iter, T) {
        int N, M;
        cin >> N >> M;
        bool swapped = false;
        if (max(N,M)%min(N,M) == 0) {
            if (N >= M) {
                cout << N-1 << '\n';
                for (int i = 0; i < N-1; i++) {
                    cout << 1 << " ";
                }
                cout << '\n';
            }
            else {
                cout << M-1 << '\n';
                for (int i = 0; i < M-1; i++) {
                    cout << -1 << " ";
                }
                cout << '\n';
            }
        }
        else {
            if (N < M) {
                swap(N, M);
                swapped = true;
            }
            int d = N%M;
            int mx = N;
            while (d != 0) {
                mx = max(mx, d+N);
                d += N%M;
                if (d >= M) {
                    d -= M;
                }
                if (d == 0) {
                    break;
                }
            }
            vector<int> cntIn(mx, 0);
            vector<int> pref(mx, 0);
            for (int i = 0; i < mx; i++) {
                if (i+N < mx) {
                    cntIn[i+N]++;
                }
                if (i-M >= 0) {
                   cntIn[i-M]++;
                }
            }
            deque<int> deq;
            for (int i = 0; i < mx; i++) {
                if (cntIn[i] == 0) {
                   deq.push_back(i);
                   pref[i] = getrandom();
                }
            }
            while (deq.size()) {
                int i = deq.front();
                deq.pop_front();
                if (i+N<mx) {
                    cntIn[i+N]--;
                    pref[i+N] = max(pref[i+N], pref[i]+getrandom());
                    if (cntIn[i+N] == 0) {
                        deq.push_back(i+N);
                    }
                }
                if (i-M>=0) {
                    cntIn[i-M]--;
                    pref[i-M] = max(pref[i-M], pref[i]+getrandom());
                    if (cntIn[i-M] == 0) {
                        deq.push_back(i-M);
                    }
                }
            }
            for (int i = mx-1; i >=0; i--) {
                pref[i] -= pref[0];
            }
            if (!swapped) {
                for (int i = 1; i < mx; i++) {
                    pref[i] *= -1;
                }
            }
            cout << mx - 1 << '\n';
            for (int i = 1; i < mx; i++) {
                cout << pref[i] - pref[i-1] << " ";
            }
            cout << '\n';
        }
	}
	return 0;
}

Compilation message

sequence.cpp:9:1: error: 'getrandom' declared as function returning a function
    9 | int getrandom()() {
      | ^~~
sequence.cpp: In function 'int main()':
sequence.cpp:68:30: error: 'getrandom' was not declared in this scope; did you mean 'srandom'?
   68 |                    pref[i] = getrandom();
      |                              ^~~~~~~~~
      |                              srandom
sequence.cpp:76:56: error: 'getrandom' was not declared in this scope; did you mean 'srandom'?
   76 |                     pref[i+N] = max(pref[i+N], pref[i]+getrandom());
      |                                                        ^~~~~~~~~
      |                                                        srandom
sequence.cpp:83:56: error: 'getrandom' was not declared in this scope; did you mean 'srandom'?
   83 |                     pref[i-M] = max(pref[i-M], pref[i]+getrandom());
      |                                                        ^~~~~~~~~
      |                                                        srandom