Submission #844348

#TimeUsernameProblemLanguageResultExecution timeMemory
844348vjudge1Spiderman (COCI20_spiderman)C++17
56 / 70
1263 ms25792 KiB
#include <bits/stdc++.h> #define endl "\n" #define pb push_back #define int long long using namespace std; const int inf = 2e18 + 5; const int N = 2e5 + 5; const int mod = 1e9 + 7; int32_t main(){ //freopen("in.txt","r", stdin); vector<int> abul(N, 1), prime; for(int i = 2; i < N; i++){ if(abul[i] == 1){ prime.pb(i); for(int j = i*2; j < N; j += i) abul[j] = 0; } } int n, k; cin>>n>>k; vector<pair<int, int> > h(n); for(int i = 0; i < n; i++){ cin>>h[i].first; h[i].second = i; } sort(h.begin(), h.end()); vector<int> ans(n); map<int, int> mp; for(int i = 0; i < n; i++){ if(h[i].first < k){ ans[h[i].second] = 0; } else if(h[i].first == k){ ans[h[i].second] = (n - i - 1); } else{ int x = h[i].first - k, cnt = 0; for(int j = 1; j * j <= x; j++){ if(x%j == 0){ if(j > k) cnt += mp[j]; if(x/j != j && x/j > k) cnt += mp[x/j]; //if(x == 6) cout<<j<<" "<<x/j<<" "<<mp[j]<<" "<<mp[x/j]<<" "<<cnt<<endl; } } ans[h[i].second] = cnt; } mp[h[i].first]++; } for(int i = 0; i < n; i++){ cout<<ans[i]<<" "; } cout<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...