猫史档案馆


C++666

用户:枫丹断头之人枫丹断头之人查看:0 回复:0 评论:0 创建时间:2024-06-19T13:34:32


#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<iostream>
#include<cmath>
#include<cstring>
#include<vector>
#include<iostream>
#include<queue>
#define MAX1 1000000005
#define MAX2 200005
#define MAX3 100005
//#include<conio.h>
using namespace std;
int n;
int g,h;
int qg[MAX3],qh[MAX3],qgl[MAX3],qhl[MAX3],y[MAX3];
char c[MAX3];
int main(){
	cin>>n;
	for(int i = 0;i<n;i++) cin>>c[i];
	for(int i = 0;i<n;i++) cin>>y[i];
	for(int i = 0;i<n;i++){
		qg[i] = qg[i-1];
		qh[i] = qh[i-1];
		if(c[i]=='G'){
			qg[i]++;
		}
		else{
			qh[i]++;
		}
	}
	for(int i = 0;i<n;i++){
		if(c[i]=='G'){
			if(qg[y[i]]-qg[i-1]>=qg[n]) qgl[i]++;
		}
		else{
			if(qh[y[i]]-qh[i-1]>=qh[n]) qhl[i]++;
		}
		qgl[i] += qgl[i-1];
		qhl[i] += qhl[i-1];
	}
	for(int i = 0;i<n;i++){
		if(c[i]=='G'){
			if(qhl[y[i]]-qhl[i-1]>=1 || qgl[i]-qgl[i-1]>=1) g++;
		}
		else{
			if(qgl[y[i]]-qgl[i-1]>=1 || qhl[i]-qhl[i-1]>=1) h++;
		}
	}
	long long ans = g*h;
	cout<<ans;
	system("pause");
	return 0;
}


回复

上一页1 页 / 共 0下一页