题意与原解析均从本地 OpenJudge 缓存迁移。
OJ: noi_openjudge
题目 ID: ch0109-10
难度:未知
标签:字符串最值解析python
日期: 2026-07-30 23:01
题意
完整题面见同目录的 problem.md。
思路
代码
Python代码
python
line_count = int(input())
maximum = -1
lines_with_maximum = []
for line_number in range(1, line_count + 1):
numbers = map(int, input().split(","))
line_maximum = max(numbers)
if line_maximum > maximum:
maximum = line_maximum
lines_with_maximum = [line_number]
elif line_maximum == maximum:
lines_with_maximum.append(line_number)
print(maximum)
print(*lines_with_maximum, sep=",")C++代码
cpp
#include <cstdio>
#include <cstring>
int n;
char str[50][5000];
int cnt[50] = {0};
int len[50] = {0};
bool is_print[50] = {0};
bool is_num(char c){
if( c >='0' && c <= '9'){
return 1;
}
return 0;
}
int to_num(char c){
return c-'0';
}
int next_cnt(int i){
int &idx = cnt[i];
int &l = len[i];
int ret = 0;
while(!is_num(str[i][idx]) && idx < l){
idx++;
}
if( idx == l) return -1;
while( is_num(str[i][idx])){
char n = str[i][idx++];
ret = ret*10+to_num(n);
}
return ret;
}
int main(){
scanf("%d",&n);
int i,j;
for (i=1;i<=n;i++){
scanf("%s",str[i]);
len[i] = strlen(str[i]);
}
int max = -1;
for (i=1;i<=n;i++){
while(1){
int r = next_cnt(i);
if( r == -1) break;
if( max < r)
max = r;
}
}
bool is_first = true;
memset(cnt,0,sizeof(cnt));
printf("%d\n",max);
for (i=1;i<=n;i++){
while(1){
int r = next_cnt(i);
if( r == -1) break;
if( max == r && !is_print[i]){
is_print[i] = 1;
if( is_first){
printf("%d",i);
is_first = 0;
}
else {
printf(",%d",i);
}
}
}
}
return 0;
}