AC日记——找最大数序列 openjudge 1.9 10

10:找最大数序列

总时间限制: 
1000ms

内存限制: 
65536kB
描述

输入n行,每行不超过100个无符号整数,无符号数不超过4位。请输出最大整数以及最大整数所在的行号(行号从1开始)。如果该数据在多个行中出现,则按从小到大输出相应行号,行号之间以一个逗号分开。

输入
一行输入一个正整数n(n <= 30)。
之后的n行,每行包含不超过100个无符号整数,整数之间以一个逗号分开。
输出
第一行:最大整数;
第二行:最大整数所在的行编号,逗号间隔。
样例输入
6
1,3,5,23,6,8,14
20,22,13,4,16
23,12,17,22
2,6,10,9,3,6
22,21,20,8,10
22,1,23,6,8,19,23
样例输出
23
1,3,6

思路:

  模拟不解释;

来,上代码:

#include<map>
#include<set>
#include<queue>
#include<stack>
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm> using namespace std; int n,if_Z,num[][],now__=,num_num[],maxn=;
int ans_there[],ans_num=; char word; inline void read_int(int &now_001)
{
now_001=,if_Z=;word=getchar();
while(word<''||word>'')
{
if(word=='-') if_Z=-;
word=getchar();
}
while(word<=''&&word>='')
{
now_001=now_001*+(int)(word-'');
word=getchar();
}
now_001*=if_Z;
} void read_all()
{
int now_s=;
for(int now_002=;now_002<=n;now_002++)
{
word=getchar();
now__=;
bool if_break=false;;
while(word!='\n')
{
int now_num=;
while(word<''||word>'')
{
if(word=='\n')
{
if_break=true;
break;
}
word=getchar();
}
if(if_break) break;
while(word<=''&&word>='')
{
now_num=now_num*+(int)(word-'');
word=getchar();
}
num[now_002][++now__]=now_num;
num_num[now_002]=now__;
}
}
} void find()
{
for(int i=;i<=n;i++)
{
for(int j=;j<=num_num[i];j++)
{
maxn=max(maxn,num[i][j]);
}
}
for(int i=;i<=n;i++)
{
for(int j=;j<=num_num[i];j++)
{
if(maxn==num[i][j])
{
ans_there[++ans_num]=i;
break;
}
}
}
} void printf__()
{
printf("%d\n%d",maxn,ans_there[]);
for(int i=;i<=ans_num;i++) printf(",%d",ans_there[i]);
printf("\n");
} int main()
{
read_int(n);
read_all();
find();
printf__();
return ;
}
上一篇:Oracle rank和dense_rank排名函数


下一篇:Android学习笔记函数