結果

問題 No.209 Longest Mountain Subsequence
ユーザー %20%20
提出日時 2018-07-30 00:05:09
言語 C
(gcc 12.3.0)
結果
AC  
実行時間 76 ms / 2,000 ms
コード長 658 bytes
コンパイル時間 977 ms
コンパイル使用メモリ 30,524 KB
実行使用メモリ 4,384 KB
最終ジャッジ日時 2023-09-26 10:02:07
合計ジャッジ時間 1,573 ms
ジャッジサーバーID
(参考情報)
judge14 / judge15
このコードへのチャレンジ(β)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 26 ms
4,380 KB
testcase_01 AC 23 ms
4,380 KB
testcase_02 AC 21 ms
4,380 KB
testcase_03 AC 75 ms
4,380 KB
testcase_04 AC 76 ms
4,384 KB
testcase_05 AC 12 ms
4,380 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.c:3:1: 警告: 戻り値の型をデフォルトの ‘int’ にします [-Wimplicit-int]
    3 | main(){
      | ^~~~
main.c: 関数 ‘main’ 内:
main.c:4:9: 警告: 関数 ‘scanf’ の暗黙的な宣言です [-Wimplicit-function-declaration]
    4 |         scanf("%*d");
      |         ^~~~~
main.c:1:1: 備考: include ‘<stdio.h>’ or provide a declaration of ‘scanf’
  +++ |+#include <stdio.h>
    1 | #define fr(i,n) for(int i=0;i<n;++i)
main.c:4:9: 警告: 組み込み関数 ‘scanf’ の互換性がない暗黙的な宣言です [-Wbuiltin-declaration-mismatch]
    4 |         scanf("%*d");
      |         ^~~~~
main.c:4:9: 備考: include ‘<stdio.h>’ or provide a declaration of ‘scanf’
main.c:36:17: 警告: 関数 ‘printf’ の暗黙的な宣言です [-Wimplicit-function-declaration]
   36 |                 printf("%d\n",z);
      |                 ^~~~~~
main.c:36:17: 備考: include ‘<stdio.h>’ or provide a declaration of ‘printf’
main.c:36:17: 警告: 組み込み関数 ‘printf’ の互換性がない暗黙的な宣言です [-Wbuiltin-declaration-mismatch]
main.c:36:17: 備考: include ‘<stdio.h>’ or provide a declaration of ‘printf’

ソースコード

diff #

#define fr(i,n) for(int i=0;i<n;++i)
#define max(a,b) ((a)>(b)?(a):(b))
main(){
	scanf("%*d");
	int N,A[100],d[2][100][100];
	for(;~scanf("%d",&N);){
		fr(i,N)scanf("%d",A+i);
		fr(f,2){
			fr(i,N){
				fr(j,N){
					d[f][i][j]=i==j;
				}
			}
			fr(i,N){
				fr(j,i){
					fr(k,j+1){
						if((A[i]>A[j]&&A[j]>A[k]||k==j)&&A[i]-A[j]>A[j]-A[k]){
							d[f][i][j]=max(d[f][i][j],d[f][j][k]+1);
						}
					}
				}
			}
			fr(i,N/2)A[i]^=A[N-1-i]^=A[i]^=A[N-1-i];
		}
		fr(f,2){
			fr(i,N){
				fr(j,i+1){
					d[f][i][0]=max(d[f][i][0],d[f][i][j]);
				}
			}
		}
		int z=0;
		fr(i,N){
			z=max(z,d[0][i][0]+d[1][N-1-i][0]-1);
		}
		printf("%d\n",z);
	}
}
0