Pagini recente » Cod sursa (job #2453977) | Cod sursa (job #2004931) | Cod sursa (job #122068) | Cod sursa (job #137866) | Cod sursa (job #658331)
Cod sursa(job #658331)
# include <fstream>
# include <vector>
# define dim 100005
using namespace std;
ifstream f("aib.in");
ofstream g("aib.out");
int n, m;
int arb[ dim ];
inline int inc( int x )
{
return ( -x & x );
}
inline void update( int poz, int x )
{
int i;
for ( i = poz ; i <= n ; i = i + inc( i ) )
arb[ i ] = arb[ i ] + x ;
}
inline void cauta( int x )
{
int i, ok = 1;
for ( i = 1 ; i <= n && ok ; ++i )
if( arb[ i ] == x )
ok = 0;
if( ok == 0 )
g << i - 1 << "\n";
else
g << - 1 << "\n";
}
void det( int x, int y )
{
int suma_a = 0, suma_b = 0, i;
for ( i = y ; i >= 1 ; i = i - inc( i ) )
suma_a = suma_a + arb[ i ];
for ( i = x - 1 ; i >= 1 ; i = i - inc( i ) )
suma_b = suma_b + arb[ i ];
g << suma_a - suma_b << "\n";
}
inline void citire()
{
int i, x, y, val;
f >> n >> m;
for ( i = 1 ; i <= n ; ++i )
{
f >> x;
update( i, x );
}
for ( i = 1 ; i <= m ; i++ )
{
f >> val;
if ( val == 0 )
{
f >> x >> y;
update( x, y );
}
else
if ( val == 1 )
{
f >> x >> y;
det( x, y );
}
else
if ( val == 2 )
{
f >> x;
cauta( x );
}
}
}
inline void afisare()
{
int i;
for ( i = 1 ; i <= n ; ++i )
g << arb[ i ] << " ";
}
int main()
{
citire();
//afisare();
return 0;
}