• API
• FAQ
• Tools
• Archive
SHARE
TWEET

# Untitled

a guest Mar 1st, 2016 677 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. #include <bits/stdc++.h>
2.
3. #define forn(i, n) for (int i = 0; i < int(n); i++)
4. #define nfor(i, n) for (int i = int(n) - 1; i >= 0; i--)
5. #define fore(i, l, r) for (int i = int(l); i < int(r); i++)
6. #define correct(x, y, n, m) (0 <= (x) && (x) < (n) && 0 <= (y) && (y) < (m))
7. #define all(a) (a).begin(), (a).end()
8. #define sz(a) int((a).size())
9. #define pb(a) push_back(a)
10. #define mp(x, y) make_pair((x), (y))
11. #define x first
12. #define y second
13.
14. using namespace std;
15.
16. typedef long long li;
17. typedef long double ld;
18. typedef pair<int, int> pt;
19.
20. template<typename X> inline X abs(const X& a) { return a < 0? -a: a; }
21. template<typename X> inline X sqr(const X& a) { return a * a; }
22.
23. template<typename A, typename B> inline ostream& operator<< (ostream& out, const pair<A, B>& p) { return out << "(" << p.x << ", " << p.y << ")"; }
24. template<typename T> inline ostream& operator<< (ostream& out, const vector<T>& a) { out << "["; forn(i, sz(a)) { if (i) out << ','; out << ' ' << a[i]; } return out << " ]"; }
25. template<typename T> inline ostream& operator<< (ostream& out, const set<T>& a) { return out << vector<T>(all(a)); }
26.
27. inline ld gett() { return clock() / ld(CLOCKS_PER_SEC); }
28.
29. const int INF = int(1e9);
30. const li INF64 = li(1e18);
31. const ld EPS = 1e-9, PI = 3.1415926535897932384626433832795;
32.
33. const int N = 1200300;
34.
35. int n, m;
36. array<int, N> a;
37.
39.     if (!(cin >> n >> m)) return false;
40.     forn(i, n) assert(scanf("%d", &a[i]) == 1);
41.     return true;
42. }
43.
44. array<int, N> cnt;
45. array<int, N> z;
46.
47. inline void solve() {
48.     forn(i, m + 1) cnt[i] = z[i] = 0;
49.     forn(i, n) if (a[i] < N) cnt[a[i]]++;
50.     fore(i, 1, m + 1)
51.         for (int j = i; j <= m; j += i)
52.             z[j] += cnt[i];
53.     int ansv = -1, ansl = -1;
54.     fore(l, 1, m + 1)
55.         if (ansv < z[l])
56.             ansv = z[l], ansl = l;
57.     assert(ansl != -1);
58.     cout << ansl << ' ' << ansv << endl;
59.     bool f = true;
60.     forn(i, n)
61.         if (ansl % a[i] == 0) {
62.             if (f) f = false;
63.             else putchar(' ');
64.             printf("%d", i + 1);
65.             ansv--;
66.         }
67.     puts("");
68.     assert(!ansv);
69.
70. }
71.
72. int main() {
73. #ifdef SU1
74.     assert(freopen("input.txt", "rt", stdin));
75.     //assert(freopen("output.txt", "wt", stdout));
76. #endif
77.
78.     cout << setprecision(10) << fixed;
79.     cerr << setprecision(5) << fixed;
80.