提出 #71366614


ソースコード 拡げる

#include<bits/stdc++.h>
#define cmin(a,b) a=std::min(a,b)
#define cmax(a,b) a=std::max(a,b)
#define inf
#define mod
#define maxn 1000006
#define int long long
int n,a[maxn];
char s[maxn],ch[maxn];
struct info{
	int x,c;
}ls[maxn];
int len[maxn],tot;
info operator +(info x,info y){
	if(x.x==y.x) return {x.x,x.c+y.c};
	return (x.x>y.x)?x:y; 
}
signed main(){
	scanf("%lld",&n);
	scanf("%s",s+1);
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
	} 
	char lst='?';info res={0,0}; 
	int mx=0,l=0,_c=0;
	for(int i=1;i<=n;i++){
		if(s[i]!=lst){
			if(lst!='?') ls[++tot]=res,ch[tot]=lst,len[tot]=l;
			lst=s[i],res={0,0},l=0;
		}
		res=res+(info){a[i],1},l++;
	}
	ls[++tot]=res,ch[tot]=lst,len[tot]=l;
	for(int i=1,l=1;i<=tot;l+=len[i],i++){
		if(ch[i]=='#'&&(i==1||i==tot)) continue;
		for(int j=l;j<=l+len[i]-1;j++){
			cmax(mx,a[j]);
		}
	}
	for(int i=2;i<=tot-1;i++){
		if(ch[i]=='#') _c++;
	}
	int ans=0;
	if(_c==1){
		for(int i=2;i<=tot-1;i++){
			if(ch[i]=='#') ans=ls[i-1].c*ls[i+1].c;
		}
	}else{
		for(int i=1;i<=tot;i++){
			if(ch[i]=='#') continue;
			if(i+2>tot) continue;
			if(ls[i+1].x==mx||ls[i].x==mx||ls[i+2].x==mx){
				ans+=ls[i].c*ls[i+2].c;
			}
		}
	}
	printf("%lld\n",ans);
	return 0;
}
/*
12
#...###...##
3 1 2 2 2 1 2 1 1 2 5 5
12
#...#.#...##
3 1 2 2 2 1 2 1 1 2 5 5
12
#...#..#...#
3 1 2 2 1 2 1 1 1 1 2 5 
*/

提出情報

提出日時
問題 C - Forest
ユーザ huanghongjun
言語 C++23 (GCC 15.2.0)
得点 600
コード長 1405 Byte
結果 AC
実行時間 17 ms
メモリ 10176 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 600 / 600
結果
AC × 3
AC × 54
セット名 テストケース
Sample 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt
All 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 01-random-001.txt, 01-random-002.txt, 01-random-003.txt, 01-random-004.txt, 01-random-005.txt, 01-random-006.txt, 01-random-007.txt, 01-random-008.txt, 01-random-009.txt, 01-random-010.txt, 02-less_segs-001.txt, 02-less_segs-002.txt, 02-less_segs-003.txt, 02-less_segs-004.txt, 02-less_segs-005.txt, 02-less_segs-006.txt, 02-less_segs-007.txt, 02-less_segs-008.txt, 02-less_segs-009.txt, 02-less_segs-010.txt, 03-many_segs-001.txt, 03-many_segs-002.txt, 03-many_segs-003.txt, 03-many_segs-004.txt, 03-many_segs-005.txt, 03-many_segs-006.txt, 03-many_segs-007.txt, 03-many_segs-008.txt, 03-many_segs-009.txt, 03-many_segs-010.txt, 04-large-001.txt, 04-large-002.txt, 04-large-003.txt, 04-large-004.txt, 04-large-005.txt, 04-large-006.txt, 04-large-007.txt, 04-large-008.txt, 04-large-009.txt, 04-large-010.txt, 05-small-001.txt, 05-small-002.txt, 05-small-003.txt, 05-small-004.txt, 05-small-005.txt, 05-small-006.txt, 05-small-007.txt, 05-small-008.txt, 05-small-009.txt, 05-small-010.txt, 06-killer-001.txt
ケース名 結果 実行時間 メモリ
00-sample-001.txt AC 1 ms 3792 KiB
00-sample-002.txt AC 1 ms 3724 KiB
00-sample-003.txt AC 1 ms 3780 KiB
01-random-001.txt AC 16 ms 6728 KiB
01-random-002.txt AC 16 ms 8640 KiB
01-random-003.txt AC 14 ms 5840 KiB
01-random-004.txt AC 14 ms 5568 KiB
01-random-005.txt AC 17 ms 8324 KiB
01-random-006.txt AC 17 ms 9776 KiB
01-random-007.txt AC 16 ms 7868 KiB
01-random-008.txt AC 16 ms 7588 KiB
01-random-009.txt AC 17 ms 9040 KiB
01-random-010.txt AC 16 ms 9732 KiB
02-less_segs-001.txt AC 14 ms 5424 KiB
02-less_segs-002.txt AC 14 ms 5436 KiB
02-less_segs-003.txt AC 13 ms 5376 KiB
02-less_segs-004.txt AC 14 ms 5484 KiB
02-less_segs-005.txt AC 15 ms 5520 KiB
02-less_segs-006.txt AC 15 ms 5440 KiB
02-less_segs-007.txt AC 14 ms 5520 KiB
02-less_segs-008.txt AC 13 ms 5564 KiB
02-less_segs-009.txt AC 14 ms 5556 KiB
02-less_segs-010.txt AC 14 ms 5540 KiB
03-many_segs-001.txt AC 16 ms 10144 KiB
03-many_segs-002.txt AC 17 ms 8268 KiB
03-many_segs-003.txt AC 16 ms 9520 KiB
03-many_segs-004.txt AC 16 ms 6928 KiB
03-many_segs-005.txt AC 17 ms 8368 KiB
03-many_segs-006.txt AC 17 ms 8612 KiB
03-many_segs-007.txt AC 15 ms 6332 KiB
03-many_segs-008.txt AC 16 ms 8196 KiB
03-many_segs-009.txt AC 16 ms 7296 KiB
03-many_segs-010.txt AC 16 ms 6848 KiB
04-large-001.txt AC 17 ms 8000 KiB
04-large-002.txt AC 17 ms 10064 KiB
04-large-003.txt AC 17 ms 8636 KiB
04-large-004.txt AC 17 ms 9344 KiB
04-large-005.txt AC 16 ms 6592 KiB
04-large-006.txt AC 17 ms 10176 KiB
04-large-007.txt AC 15 ms 5664 KiB
04-large-008.txt AC 16 ms 6728 KiB
04-large-009.txt AC 17 ms 8576 KiB
04-large-010.txt AC 17 ms 10048 KiB
05-small-001.txt AC 1 ms 3776 KiB
05-small-002.txt AC 1 ms 3648 KiB
05-small-003.txt AC 1 ms 3776 KiB
05-small-004.txt AC 1 ms 3776 KiB
05-small-005.txt AC 1 ms 3696 KiB
05-small-006.txt AC 1 ms 3728 KiB
05-small-007.txt AC 1 ms 3748 KiB
05-small-008.txt AC 1 ms 3792 KiB
05-small-009.txt AC 1 ms 3728 KiB
05-small-010.txt AC 1 ms 3772 KiB
06-killer-001.txt AC 13 ms 5576 KiB