CF1248D1.The World Is Just a Programming Task (Easy Version)

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

这是该问题的简化版。在本版本中,n≤500n \le 500。

Vasya 是一位经验丰富的编程竞赛题目开发者。和所有伟大的人一样,Vasya 也曾遇到过创作瓶颈。为了解决这个问题,Petya 送给了他一个只包含左括号和右括号的字符串。Petya 认为,一个括号字符串的美丽值是其所有循环移位中,能够构成合法括号序列的个数。

为了转移注意力,Vasya 决定从字符串中任选两个位置(可以相同),并交换这两个位置上的字符。Vasya 只会执行一次这样的操作。他想知道,通过这样的操作,字符串的最大美丽值是多少。请你帮助他。

我们提醒你,括号序列 ss 被称为合法的,当且仅当:

  • ss 为空;
  • ss 形如“(tt)”,其中 tt 是合法括号序列;
  • ss 形如 t1t2t_1 t_2,即 t1t_1 和 t2t_2 的连接,其中 t1t_1 和 t2t_2 都是合法括号序列。

例如,“(()())”、“()” 是合法的,而 “)(” 和 “())” 不是合法的。

长度为 nn 的字符串 ss 的循环移位 kk(0≤k<n0 \leq k < n)是指将字符串 ss 的最后 kk 个字符与前 n−kn-k 个字符连接起来。例如,字符串 “(())()” 的循环移位 22 是 “()(())”。

如果 i≠ji \ne j,则循环移位 ii 和 jj 被认为是不同的。

输入格式

第一行包含一个整数 nn(1≤n≤5001 \le n \le 500),表示字符串的长度。

第二行包含一个恰好由 nn 个字符组成的字符串,每个字符都是 “(” 或 “)”。

输出格式

第一行输出一个整数,表示通过交换任意两个字符后,字符串能够达到的最大美丽值。

第二行输出两个整数 ll 和 rr(1≤l,r≤n1 \leq l, r \leq n),表示应交换的两个字符的位置。

如果有多种交换方式可以达到最大美丽值,输出任意一种即可。

输入输出样例

  • 输入#1

    10
    ()()())(()
    

    输出#1

    5
    8 7
    
  • 输入#2

    12
    )(()(()())()
    

    输出#2

    4
    5 10
    
  • 输入#3

    6
    )))(()
    

    输出#3

    0
    1 1
    

说明/提示

在第一个样例中,我们可以交换第 77 个和第 88 个字符,得到字符串 “()()()()()”。该字符串的循环移位 0,2,4,6,80, 2, 4, 6, 8 都是合法括号序列。

在第二个样例中,交换第 55 个和第 1010 个字符后,得到字符串 “)(())()()(()”。其循环移位 11,7,5,311, 7, 5, 3 都是合法括号序列。

在第三个样例中,任意交换两个括号,合法括号序列的循环移位数都是 00。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页