답안 #844354

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
844354 2023-09-05T12:34:47 Z vjudge1 Spiderman (COCI20_spiderman) C++17
49 / 70
1276 ms 24140 KB
#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);
  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;

  if(k > 0){
    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]++;
  }
  }
  else{
    for(int i = 0; i < n; i++) mp[h[i].first]++;

    for(int i = 0; i < n; i++){
      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;
    }
  }

  for(int i = 0; i < n; i++){
    cout<<ans[i]<<" ";
  }
  cout<<endl;
  return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 856 KB Output is correct
2 Correct 7 ms 856 KB Output is correct
3 Incorrect 294 ms 3616 KB Output isn't correct
4 Correct 862 ms 8904 KB Output is correct
5 Incorrect 508 ms 12552 KB Output isn't correct
6 Incorrect 1253 ms 17372 KB Output isn't correct
7 Correct 530 ms 18580 KB Output is correct
8 Correct 528 ms 18768 KB Output is correct
9 Correct 1276 ms 24140 KB Output is correct
10 Correct 1245 ms 23772 KB Output is correct