Description

有一个长度为n的序列a1,a2,...,an。其中ai要么是1("W"),要么是2("T")。

现在有m个询问,每个询问是询问有没有一个连续的子序列,满足其和为q。

Input

第一行n,m (1<=n,m<=1000000)

第二行这个序列,起始编号为1,终止编号为n

下面每行一个询问q,询问有没有一个连续的子序列,满足其和为q (1<=q<=2000000)

Output

对于每个询问,输出一行,如果有,输出这个序列的起点和终点(如果有多个输出任意一个);如果没有,输出“NIE”。

Sample Input

5 3

TWTWT

5

1

7

Sample Output

1 3

2 2

NIE


有一个结论,如果可以凑出x那么一定可以凑出x-2

分情况讨论,如果区间中有一个2那么直接删掉这个二

如果没有那么删掉两边的1

直到没有数

所以直接求出最大的奇数和偶数就可以了


#include<bits/stdc++.h>
using namespace std;
#define fu(a,b,c) for(int a=b;a<=c;++a)
#define fd(a,b,c) for(int a=b;a>=c;--a)
#define N 1000010
int a[N],n,m;
int l_line[N<<1],r_line[N<<1];
int main(){
scanf("%d%d",&n,&m);
getchar();
int sum=0;
fu(i,1,n){
char c=getchar();
if(c=='W')a[i]=1;
else a[i]=2;
sum+=a[i];
}
int l=1,r=n,now=sum;
while(l<=r){
l_line[now]=l,r_line[now]=r;
if(a[l]>1)l++,now-=2;
else if(a[r]>1)r--,now-=2;
else if(l<r-1)l++,r--,now-=2;
else break;
}
l=0,r=0;
fu(i,1,n)if(a[i]==1){l=i;break;}
fd(i,n,1)if(a[i]==1){r=i;break;}
if(l&&r){
now=max(sum-(n-r)*2-1,sum-l*2+1);
if((n-r)>l-1)r=n,l++;
else l=1,r--;
}
while(l<=r){
l_line[now]=l,r_line[now]=r;
if(a[l]>1)l++,now-=2;
else if(a[r]>1)r--,now-=2;
else if(l<r-1)l++,r--,now-=2;
else break;
}
fu(i,1,m){
int x;scanf("%d",&x);
if(x>sum||!l_line[x])printf("NIE\n");
else printf("%d %d\n",l_line[x],r_line[x]);
}
return 0;
}

最新文章

  1. 设置 LongListSelector 只有在项多的时候才分组
  2. 使用Kettle抽取数据时,出现中文乱码问题解决方案
  3. 转:python webdriver API 之层级定位
  4. Java--&gt;一个只能运行十次的程序
  5. cookie和会话状态的工作原理
  6. (转)Spring 读书笔记-----使用Spring容器(一)
  7. HDU1452Happy 2004(高次幂取模+积性函数+逆元)
  8. chrome浏览器不兼容jQuery Mobile问题解决
  9. Java Web 中使用ffmpeg实现视频转码、视频截图
  10. 公用表表达式(CTE)
  11. springmvc与fastjson的整合,注解@RequestBody的使用
  12. js for in 获得遍历数组索引和对象属性
  13. 软件产品案例分析——福州大学微信小程序
  14. CSS 文本
  15. golang基础--类型与变量
  16. linux开启远程访问端口
  17. MYSQL 分组合并函数
  18. exFAT移动硬盘写保护怎么去掉
  19. 框架-springmvc源码分析(一)
  20. Nginx特性验证-反向代理/负载均衡/页面缓存/URL重定向

热门文章

  1. spring-boot 加入拦截器Interceptor
  2. Nginx与PHP(FastCGI)的安装、配置
  3. rest 学习总结(最近不间断更新)
  4. [spring mvc]Hello World入门
  5. 原生javascript-分享自己常用的函数
  6. linux sed 批量替换字符串
  7. IOS-Quartz2D(Paths元素)
  8. Ansible 小手册系列 十三(Jinja2)
  9. 身份证真实性校验js、mini ui身份证长度正则验证
  10. python 细节回顾