[hdu 2022] 海选女主角

来源:互联网 发布:lovelive日服卡牌数据 编辑:程序博客网 时间:2024/04/30 04:33

海选女主角

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 31211    Accepted Submission(s): 14003


Problem Description
potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业余时间挣点外快以养家糊口。
“做什么比较挣钱呢?筛沙子没力气,看大门又不够帅...”potato老师很是无奈。
“张艺谋比你还难看,现在多有钱呀,听说还要导演奥运开幕式呢!你为什么不去娱乐圈发展呢?”lwg在一旁出主意。
嗯,也是,为了生存,就委屈点到娱乐圈混混吧,马上就拍一部激光电影《杭电记忆——回来我的爱》。
说干就干,马上海选女主角(和老谋子学的,此举可以吸引媒体的眼球,呵呵),并且特别规定,演员必须具有ac的基本功,否则直接out!
由于策划师风之鱼(大师级水王)宣传到位,来应聘的MM很多,当然包括nit的蛋糕妹妹等呼声很高的美女,就连zjut的jqw都男扮女装来应聘(还好被安全顾问hdu_Bin-Laden认出,给轰走了),看来娱乐圈比acm还吸引人哪...
面试那天,刚好来了m*n个MM,站成一个m*n的队列,副导演Fe(OH)2为每个MM打了分数,分数都是32位有符号整数。
一开始我很纳闷:分数怎么还有负的?Fe(OH)2解释说,根据选拔规则,头发染成黄色、化妆太浓、穿的太少等等都要扣分数的,扣的多了就可能是负分了,当然,如果发现话语中夹有日语,就直接给-2147483648分了。
分数送上来了,是我做决定的时候了,我的一个选拔原则是,要选一个面试分数绝对值(必须还是32位整数)最大的MM。
特别说明:如果不幸选中一个负分的MM,也没关系,因为我觉得,如果不能吸引你,那要想法恶心你。
 

Input
输入数据有多组,每组的第一行是两个整数m和n,表示应聘MM的总共的行列数,然后是m行整数,每行有n个,m和n的定义见题目的描述。
 

Output
对于每组输入数据,输出三个整数x,y和s,分别表示选中的MM的行号、列号和分数。
note:行号和列号从一开始,如果有多个MM的分数绝对值一样,那么输出排在最前面的一个(即行号最小的那个,如果行号相同则取列号最小的那个)。 
 

Sample Input
2 31 4 -3-7 3 0
 

Sample Output
2 1 -7
 

分析:

1、此题没有技巧可言,就是求最值,只是同时还要求出最值位置。可以使用二维数组求解,也可以不使用数组求解。

2、不使用数组求解的方法:一共输入 m * n 个数( m 行 n 列 ),求出最值的同时记录这是第几个数pos(从 0 开始计数),这个数的位置就是( pos / n + 1 , pos % n + 1 )

3、注意此题有一个陷阱!-2147483648 这个分数是 int 表示范围的边界(-2147483648 ~ 2147483647),绝对值判断的时候如果用 int 处理,数据会溢出,所以绝对值判断的时候要用 double 型处理

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (scanner.hasNext()) {int m = scanner.nextInt();int n = scanner.nextInt();int pos = 0, curr;int max = scanner.nextInt();for (int i = 1; i < n * m; i++) {curr = scanner.nextInt();if (Math.abs((double) max) < Math.abs((double) curr)) {max = curr;pos = i;}}System.out.println((pos / n + 1) + " " + (pos % n + 1) + " " + max);}}}
0 0