列表

详情


NC21781. 牛兄牛弟

描述

一群牛兄牛弟准备去一家餐厅吃饭,已知他们是按照某个顺序先后到达餐厅的,第i个到达餐厅的要求坐在离门口至少a[i]的距离

牛兄牛弟们不准备让别人知道他们是兄弟,虽然他们长得比较像,他们决定任意两个兄弟之间的距离都要大于等于d

餐厅服务员记录下他们的需求之后,开始陆续给到来的牛兄弟们排座位,服务员每次会指定一个满足要求的离门口最近的座位给新到的牛

输入描述

第一行输入两个整数n,d
第二行输入n个数a[i]

1 ≤ n ≤ 1000, 1 ≤ d,a[i] ≤ 106

输出描述

输出n个数分别表示每一个牛的位置

示例1

输入:

4 10
1 21 11 7

输出:

1 21 11 31

示例2

输入:

4 11
1 21 11 7

输出:

1 21 32 43

示例3

输入:

4 1000000
1000000 1000000 1000000 1

输出:

1000000 2000000 3000000 4000000

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Python3 解法, 执行用时: 201ms, 内存消耗: 4756K, 提交时间: 2023-01-10 16:02:20

n,d=map(int,input().split())
l=list(map(int,input().split()))
ans=[]
ans1=[]
for i in l:
    if len(ans)==0:
        print(i,end=" ")
        ans.append(i)
        continue
    ans.sort()
    for j in ans:
        if i<j+d and i>j-d:
            i=j+d
    ans.append(i)
    print(i,end=" ")

C++(g++ 7.5.0) 解法, 执行用时: 19ms, 内存消耗: 456K, 提交时间: 2023-06-01 19:59:18

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
	int n,d;
	cin>>n>>d;
	int a[1001];
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
		sort(a,a+i);
		for(int j=0;j<i;j++)
		if(abs(a[i]-a[j])<d)
		a[i]=a[j]+d;
		cout<<a[i]<<' ';
	}
	return 0;
}

C++(clang++ 11.0.1) 解法, 执行用时: 21ms, 内存消耗: 452K, 提交时间: 2023-01-10 13:04:16

#include<bits/stdc++.h>
using namespace std;int main(void){int n,d,i,j,a[1001];cin>>n>>d;for(int i=0;i<n;i++){cin>>a[i];sort(a,a+i);for(int j=0;j<i;j++) if(fabs(a[i]-a[j])<d) a[i]=a[j]+d;cout<<a[i]<<" ";} }

上一题