Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <string>
- #include <cmath>
- #include <memory.h>
- #include <algorithm>
- #include <queue>
- #include <stack>
- #include <vector>
- #include <cstdlib>
- #include <map>
- #include <bitset>
- #include <set>
- using namespace std;
- #define INF 1E+9
- #define INFll 9223372036854775807
- #define EPS 1E-7
- #define MAXN
- #define MAXL
- #define mp(x, y) make_pair(x, y)
- #define pb(x) push_back(x)
- #define all(a) (a).begin(), (a).end()
- #ifdef DEBUG
- # define LOG(x) (cerr << #x << " = " << (x) << '\n')
- #else
- # define LOG(x) 0
- #endif
- typedef long long LL ;
- typedef long double dbl ;
- int main(){
- #ifdef DEBUG
- freopen("input.txt", "r",stdin);
- freopen("output.txt", "w",stdout);
- #endif
- int n;
- scanf("%d", &n);
- vector <bool> mod(n);
- vector <int> p(n, -1);
- vector <int> pnum(n, -1);
- vector <int> val(n);
- {
- int tmp;
- scanf("%d", &tmp);
- mod[tmp % n] = 1;
- pnum[tmp % n] = 0;
- val[0] = tmp;
- }
- for (int i = 1; i < n; ++i) {
- int num;
- scanf("%d", &num);
- val[i] = num;
- num %= n;
- for (int j = 0; j < n; ++j) {
- if (!mod[j] || pnum[j] == i)
- continue;
- int pos = (j + num) % n;
- if (!mod[pos]) {
- mod[pos] = 1;
- p[pos] = j;
- pnum[pos] = i;
- }
- }
- }
- vector <int> ans;
- int v = 0;
- for (v = 0; v != -1; v = p[v])
- ans.push_back(val[pnum[v]]);
- printf("%d\n", ans.size());
- for (int i = 0; i < ans.size(); ++i)
- printf("%d\n", ans[i]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement