Submission #440620

#TimeUsernameProblemLanguageResultExecution timeMemory
440620Abrar_Al_SamitSpiderman (COCI20_spiderman)C++17
56 / 70
1886 ms124936 KiB
#include<bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; #define debug(x) cerr << '[' << (#x) << "] = " << x << '\n'; template<class T> using ordered_set = tree<T, null_type , less<T> , rb_tree_tag , tree_order_statistics_node_update> ; const int maxn = 1e6 + 6; vector<int>divisor[maxn]; void sieve() { for(int i=1; i<maxn; ++i) { for(int j=i; j<maxn; j+=i) divisor[j].push_back(i); } } void PlayGround() { int n; cin >> n; int k; cin >> k; vector<int>freq(maxn), ans(maxn); vector<int>h(n); int big = 0; for(int i=0; i<n; ++i) { cin >> h[i]; freq[h[i]]++; big += h[i]>k; } for(int i=k+1; i<maxn; ++i) { for(int j=i; j+k<maxn; j+=i) { ans[j+k] += freq[i]; } } // int seen = 0; // for(int i=1; i<maxn; ++i) { // seen += freq[i]; // if(freq[i]==0) continue; // if(i==k) { // ans[i] += n - seen; // } else if(i > k) { // int x = i - k; // for(auto d : divisor[x]) // if(i % d == k) ans[i] += freq[d]; // if(x==i) --ans[i]; // } // } for(int i=0; i<n; ++i) { cout << ans[h[i]] + (h[i]==k ? big : 0) << ' '; } cout << '\n'; #ifndef ONLINE_JUDGE cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n"; #endif } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // #ifndef ONLINE_JUDGE // freopen("input.txt", "r", stdin); // #endif sieve(); PlayGround(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...