Submission #844446

#TimeUsernameProblemLanguageResultExecution timeMemory
844446vjudge1Spiderman (COCI20_spiderman)C++17
70 / 70
134 ms27264 KiB
#include <bits/stdc++.h> using namespace std; #define fast ios::sync_with_stdio(0);cin.tie(0); #define s second #define f first typedef long long ll; const ll MOD = 998244353; const ll LOGN = 20; const ll MAXN = 1e6 + 5; vector<ll> A, A2; ll divCnt[MAXN], newCnt[MAXN]; map<ll,ll> mp; int main() { fast ll N, K; cin >> N >> K; A = vector<ll>(N+1); A2 = vector<ll>(N+1); for (int i = 1; i <= N; i++) { cin >> A[i]; mp[A[i]]++; A2[i] = A[i]; } sort(A2.begin(), A2.end()); for (int i = 1; i <= N; i++) divCnt[A[i]]++; for (int i = K+1; i < MAXN; i++) { if (divCnt[i] == 0) continue; for (int j = i; j < MAXN; j+=i) { newCnt[j] += divCnt[i]; } } for (int i = 1; i <= N; i++) { if (A[i] == K) { int Q = upper_bound(A2.begin(), A2.end(), A[i]) - A2.begin(); cout << N - Q + 1 << " "; } else if (A[i] < K) cout << "0 "; else { ll ans = newCnt[A[i] - K]; if (K == 0) ans--; cout << ans << " "; } } cout << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...