题目链接:https://www.luogu.com.cn/problem/P2697
题目描述
有一种宝石串,由绿宝石和红宝石串成,仅当绿宝石和红宝石数目相同的时候,宝石串才最为稳定,不易断裂。安安想知道从给定的宝石串中,可以截取一段最长的稳定的宝石串,有多少颗宝石组成。请你帮助他。
绿宝石用‘G’表示,红宝石用‘R'表示。
输入格式
一行由G和R组成的字符串
输出格式
最长的稳定的宝石串有多少颗宝石组成
输入输出样例
输入 #1
GRGGRG
输出 #1
4
说明/提示
RGGR为答案。
宝石数<=1000000
这是一道贪心题,要求出从1到i之间G比R多的个数然后再用数组记录下对应最小的i的最的大的i,最后在算出最大i和最小i的差的最大值即为答案。
代码:
#include<stdio.h> #include<string.h> #include<malloc.h> struct node{ int b,e,f; }; char s[1000001]; int r=0,maxx=0; int main(){ struct node*k=(struct node*)malloc(24000012),*a=k+1000000; memset(k,0,24000012); int lenk=0; while((s[lenk]=getchar())!=' '&&s[lenk]!=EOF)lenk++; s[lenk]='