結果

問題 No.318 学学学学学
コンテスト
ユーザー piyoko_212
提出日時 2015-12-21 19:40:02
言語 C++11
(gcc 15.2.0 + boost 1.89.0)
コンパイル:
g++-15 -O2 -lm -std=gnu++11 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
WA  
実行時間 -
コード長 674 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 470 ms
コンパイル使用メモリ 67,096 KB
実行使用メモリ 6,400 KB
最終ジャッジ日時 2026-04-06 18:34:31
合計ジャッジ時間 2,303 ms
ジャッジサーバーID
(参考情報)
judge1_1 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 14 WA * 12
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include<stdio.h>
#include<algorithm>
#include<stack>
using namespace std;
int b[110000];
int z[110000];
int l[110000];
int r[110000];
int main(){
	int a;scanf("%d",&a);
	for(int i=0;i<a;i++){
		scanf("%d",b+i);
		z[i]=b[i];
		l[i]=r[i]=-1;
	}
	std::sort(z,z+a);
	for(int i=0;i<a;i++){
		int t=lower_bound(z,z+a,b[i])-z;
		if(l[t]==-1)l[t]=i;
	}
	for(int i=a-1;i>=0;i--){
		int t=lower_bound(z,z+a,b[i])-z;
		if(r[t]==-1)r[t]=i;
	}
	stack<int>S;
	for(int i=0;i<a;i++){
		if(i)printf(" ");
		int t=lower_bound(z,z+a,b[i])-z;
		if(S.size()==0||z[S.top()]<b[i]){
			S.push(t);
		}
		printf("%d",z[S.top()]);
		while(S.size()&&r[S.top()]<=i){
			S.pop();
		}
	}
	printf("\n");
}
0