9.7贝壳笔试算法第三题搬砖AC代码分享

#include <bits/stdc++.h>
using  namespace std;

#define maxn 1005

int w[maxn];
int mark[maxn]; //记录0-1000数,每个数在w中对应的最近的数 

int main()
{
	int T;
	scanf("%d", &T);
	while(T--) {
		int n;
		scanf("%d", &n);
		for(int i=0; i<n; i++) scanf("%d", &w[i]);
		int minNum = maxn;
		map<int,int> hashw; //记录相同数的最小下标
		for(int i=1; i<=n; i++) {
			if(hashw.find(w[i-1]) == hashw.end()) hashw[w[i-1]] = i;
			minNum = min(minNum, w[i-1]);
		}

		int tmp = 0;
		for(int i=0; i<=1000; i++) {
			if(hashw.find(i) != hashw.end()) {
				mark[i] = i;
				tmp = i;
			} else {
				mark[i] = tmp;
			}
		}
		
		
		int q;
		scanf("%d", &q);
		int x,y,z;
		while(q--) {
			scanf("%d%d%d", &x, &y, &z);
			int work = x*y*z;

			if(work < minNum) printf("-1\n");
			else {
				printf("%d %d\n", hashw[mark[work]], mark[work]);
			}
		}
	}
    return 0;
}

#笔试题目##贝壳找房#
全部评论
可能是因为没用scanf吧 枯了
点赞
送花
回复
分享
发布于 2020-09-07 20:11

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务