50195. Second Largest Distance
難度:3.8/5
MLE就改開全域。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34#include <stdio.h>
#include <stdlib.h>
int now_idx = 0, n;
int last_idx[3] = {-1, -1, -1};
int max_len[3] = {-1, -1, -1}, max_idx[3][2] = {{-1, -1}, {-1, -1}, {-1, -1}};
int sec_len[3] = {-1, -1, -1}, sec_idx[3][2] = {{-1, -1}, {-1, -1}, {-1, -1}};
signed main(){
while(scanf("%d", &n) != EOF){
n--;
if(last_idx[n] == -1){}
else if(now_idx - last_idx[n] > max_len[n]){
sec_len[n] = max_len[n];
sec_idx[n][0] = max_idx[n][0], sec_idx[n][1] = max_idx[n][1];
max_len[n] = now_idx - last_idx[n];
max_idx[n][0] = last_idx[n], max_idx[n][1] = now_idx;
}
else if(now_idx - last_idx[n] == max_len[n]){
max_len[n] = now_idx - last_idx[n];
max_idx[n][0] = last_idx[n], max_idx[n][1] = now_idx;
}
else if(now_idx - last_idx[n] >= sec_len[n]){
sec_len[n] = now_idx - last_idx[n];
sec_idx[n][0] = last_idx[n], sec_idx[n][1] = now_idx;
}
last_idx[n] = now_idx;
now_idx++;
}
for(int i = 0; i < 3; i++){
printf("%d %d %d\n", sec_len[i], sec_idx[i][0], sec_idx[i][1]);
}
}