Mike likes to invent new functions. The latest one he has invented is called ForbiddenSum. Let's consider how it can be calculated:

You are given a set S of positive integers. The integers are not necessary distinct. ForbiddenSum of S equals to the minimal non-negative integer, that can't be returned by the algorithm described below:

  • Choose a random subset S' of S(it can be empty as well);
  • Calculate the sum of all the numbers of S' and assign it to the variable T;
  • Return the value of the variable T.

I.e. if S = {1, 1, 3, 7}, the algorithm can return 0(S' = {}), 1(S' = {1}), 2(S' = {1, 1}), 3(S' = {3}), 4(S' = {1, 3}), 5(S' = {1, 1, 3}), but it can't return 6. So, ForbiddenSum of S equals to 6.

Inventing of new function is not the only Mike's hobby. Also, he likes to collect rare and unusual arrays. He is going to share with you one of them.

Formally, Mike gives you one array A, consisting of N positive integers. After that, he asks you M questions, two integers Li and Ri describe i'th question: What does ForbiddenSum of S={ALiALi+1, ..., ARi-1ARi} equal to?

Input

The first line contains the only integer N. The second line contains N integers - the array AA is 1-indexed.

The third line contains the only integer M. The following M lines contain two integer numbers 1 ≤ Li ≤ Ri ≤ N each.

Output

Output should consists of M lines. The i'th line should contains the answer to the i'th question.

Constraints

1 ≤ NM ≤ 100,000

1 ≤ Ai ≤ 109

1 ≤ A1 + A2 + ... + AN ≤ 109

Example

Input:
5
1 2 4 9 10
5
1 1
1 2
1 3
1 4
1 5 Output:
2
4
8
8
8

Explanation

In the example test there are M=5 questions. We won't describe all of them, only two ones.

The first question

In the first test case S equals to {1}. The answer is 2, because we can recieve 1 in case the algorithm chooses S' = {1}. But there are no chances to receive 2.

The second question

In the first test case S equals to {1, 2}. The answer is 4, because we can recieve 1 in case the algorithm chooses S' = {1}, 2 in case the algorithm chooses S' = {2} and 3 in case the algorithm chooses S' = {1, 2}. But there are no chances to receive 4.

中文题面在这: Mandarin Chinese

有一个性质是我随便口胡的虽然不知道怎么证明但是却用它A了这个题。

那就是如果集合按数字大小排序之后,i是最小的满足a[1]+a[2]+...a[i]<a[i+1]-1,那么这个集合的forbidden sum为a[i+1]-1.

这就相当于表示不了a[i+1]-1这个数了。

而如果>=的话那么是可以接上的。

于是就可以暴力做啦,对于每次询问,设最大能表示的数为num。

一开始num都为0,然后每次查找区间内权值∈[1,num+1]的数的和,然后把num设为这个值。

当然如果这个值==num的话,说明无法扩展了,输出num+1然后去管下一个询问就好了。

这个的话用主席树比较好(当然你也可以用其他的)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define ll long long
#define maxn 100005
using namespace std;
const int inf=<<;
struct node{
int lc,rc;
int s;
}nil[maxn*];
int n,m,ky,a[maxn],cnt=;
int rot[maxn];
int le,ri,S,T,ans,pre; int update(int u,int l,int r){
int ret=++cnt;
nil[ret]=nil[u];
nil[ret].s+=le;
if(l==r) return ret; int mid=l+r>>;
if(le<=mid) nil[ret].lc=update(nil[ret].lc,l,mid);
else nil[ret].rc=update(nil[ret].rc,mid+,r); return ret;
} int query(int x,int y,int l,int r){
if(l>=le&&r<=ri) return nil[y].s-nil[x].s;
int mid=l+r>>,an=;
if(le<=mid) an+=query(nil[x].lc,nil[y].lc,l,mid);
if(ri>mid) an+=query(nil[x].rc,nil[y].rc,mid+,r);
return an;
} inline void prework(){
rot[]=nil->lc=nil->rc=;
nil->s=; for(int i=;i<=n;i++){
le=a[i];
rot[i]=update(rot[i-],,1e9);
}
} int main(){
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",a+i); prework(); scanf("%d",&m);
while(m--){
scanf("%d%d",&S,&T);
pre=-,ans=;
while(ans>pre){
pre=ans;
le=,ri=ans+;
ans=query(rot[S-],rot[T],,1e9);
} printf("%d\n",ans+);
} return ;
}

Codechef ForbiddenSum的更多相关文章

  1. 【CodeChef】ForbiddenSum

    Portal --> CC ForbiddenSum Solution 场上想到了\(O(NM)\)的做法..然而并没有什么用 首先考虑比较简单的一个问题,给定一个数组\(A\),问这些数不能凑 ...

  2. [BZOJ4408&&BZOJ4299][FJOI2016 && Codechef]神秘数&&FRBSUM(主席树)

    4299: Codechef FRBSUM Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 550  Solved: 351[Submit][Statu ...

  3. 【BZOJ-3514】Codechef MARCH14 GERALD07加强版 LinkCutTree + 主席树

    3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 1288  Solved: 490 ...

  4. 【BZOJ4260】 Codechef REBXOR 可持久化Trie

    看到异或就去想前缀和(⊙o⊙) 这个就是正反做一遍最大异或和更新答案 最大异或就是很经典的可持久化Trie,从高到低贪心 WA: val&(1<<(base-1))得到的并不直接是 ...

  5. codechef 两题

    前面做了这场比赛,感觉题目不错,放上来. A题目:对于数组A[],求A[U]&A[V]的最大值,因为数据弱,很多人直接排序再俩俩比较就过了. 其实这道题类似百度之星资格赛第三题XOR SUM, ...

  6. codechef January Challenge 2014 Sereja and Graph

    题目链接:http://www.codechef.com/JAN14/problems/SEAGRP [题意] 给n个点,m条边的无向图,判断是否有一种删边方案使得每个点的度恰好为1. [分析] 从结 ...

  7. BZOJ3509: [CodeChef] COUNTARI

    3509: [CodeChef] COUNTARI Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 339  Solved: 85[Submit][St ...

  8. CodeChef CBAL

    题面: https://www.codechef.com/problems/CBAL 题解: 可以发现,我们关心的仅仅是每个字符出现次数的奇偶性,而且字符集大小仅有 26, 所以我们状态压缩,记 a[ ...

  9. CodeChef FNCS

    题面:https://www.codechef.com/problems/FNCS 题解: 我们考虑对 n 个函数进行分块,设块的大小为S. 每个块内我们维护当前其所有函数值的和,以及数组中每个元素对 ...

随机推荐

  1. NOIP2010 codevs1069 洛谷P1525 关押罪犯

    Problem Description S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极 不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用 ...

  2. CSS3不遥远,几个特性你要知道

    CSS是众所周知且应用广泛的网站样式语言,在它的版本三(CSS3)计划中,新增了一些能够节省时间的特性.尽管只有当前最新了浏览器版本才能支持这些 效果,但了解它们还是必须且很有趣味性的.CSS3中的5 ...

  3. JQuery拖拽改变元素的尺寸

    "元素拖拽改变大小"其实和"元素拖拽"一个原理,只是所动态改变的对象不同而已,主要在于 top.left.width.height 的运用,相对实现起来也非常容 ...

  4. 你是否彻底了解margin属性?

    写css,你少不了与margin打交道.你真的了解margin吗?你知道margin有什么特性吗?你知道什么是垂直外边距合并?margin在块元素.内联元素中的区别?什么时候该用padding而不是m ...

  5. Bash script: report largest InnoDB files

    The following script will report the largest InnoDB tables under the data directory: schema, table & ...

  6. 使用Spring AOP实现读写分离(MySql实现主从复制)

    1.  背景 我们一般应用对数据库而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是说采用数据库集群的方案,其中一个是主库,负责写入数据,我们称之为:写库: 其它都是从库,负责读 ...

  7. MSTest DeploymentItemAttribute

    该attribute可以把指定的文件拷贝到每次运行的Out目录下,比如有一个config文件,那么用下面的命令, [TestClass] [DeploymentItem("Default.c ...

  8. 《vue.js实战》练习---标签页组件

    html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  9. tomcat编码配置

    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" ...

  10. python Fielddata is disabled on text fields

    # 执行https://www.elastic.co/guide/cn/elasticsearch/guide/current/_aggregation_test_drive.html中的例子时报错F ...