Can anybody tell me why it returns 0? I have Input:
5 2
1 0 1 1 0
And 2 queries 1 X to flip Xth bit in array:
1 2 (result {1 1 1 1 0} )
0 L R to take a subarray and convert it into Decimal:
0 1 4 (Here it takes {1,1,1,1})
In this case it should print 15. But this printing just zero?
My code:
#include <iostream>
using namespace std;
const int maxn = 1e6 +500;
char a[maxn];
//That's function which I'm stuck with
long bin_to_dec(char *s)
{
short i;
long res = 0;
for (i = 0;i<sizeof(long)*8 && s[i];++i)
{
res<<=1;
res |=(s[i]-'0');
}
return res;
}
//This function responsible for queries
//Arguments which it takes : vid - type of query,int inx - first parameter,inx1 - 2nd parameter
int zapros(int vid,int inx,int inx1 = 0)
{
string s = "";
if (vid == 1)
{
a[inx] +=1;
}
else
{
int c = 1;
char ch[inx1+1];
for (int k = inx;k<=inx1;k++)
{
ch[c] = a[k];
c++;
}
cout<<bin_to_dec(ch);
/*
for (int k = inx;k<=inx1;k++)
{
s+=a[k];
}*/
}
}
int main()
{
int n,q;
int vid,inx,inx1;
cin>>n>>q;
for (int i =1;i<=n;i++)
{
cin>>a[i];
}
for (int j =1;j<=q;j++)
{
cin>>vid;
if (vid == 1)
{
cin>>inx;
zapros(vid,inx);
}
else
{
cin>>inx>>inx1;
zapros(vid,inx,inx1);
}
}
return 0;
}
I'm a beginner in C++,so please dont'be strict;)