Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- struct node{
- int num, ques, ans;
- };
- bool sort_num(node a, node b){
- return a.num < b.num;
- }
- bool sort_ques(node a, node b){
- return a.ques < b.ques;
- }
- int main(){
- int n, k;
- scanf("%d%d", &n, &k);
- int ar[n+1];
- ar[0] = 0;
- for(int i=1;i<=n;i++) scanf("%d", &ar[i]);
- sort(ar+1, ar+n+1);
- node Q[k+1];
- for(int i=1;i<=k;i++){
- scanf("%d", &Q[i].num);
- Q[i].ques = i;
- }
- sort(Q+1, Q+k+1, sort_num);
- // find ans
- int idx = 1, sum = 0;// idx = Q
- for(int i=1;i<=n;i++){
- sum += ar[i] - ar[i-1] - 1;
- while(idx <= k and sum >= Q[idx].num){
- Q[idx].ans = ar[i] - sum + Q[idx].num - 1;
- idx ++;
- }
- if(idx > k) break;
- }
- while(idx <= k){
- Q[idx].ans = ar[n] + Q[idx].num - sum;
- idx ++;
- }
- sort(Q+1, Q+k+1, sort_ques);
- // print ans
- for(int i=1;i<=k;i++){
- printf("%d ",Q[i].ans);
- }
- return 0;
- }
Advertisement
RAW Paste Data
Copied
Advertisement