Pagini recente » Cod sursa (job #799278) | Cod sursa (job #3259777) | Cod sursa (job #1012434) | Cod sursa (job #2668653) | Cod sursa (job #261478)
Cod sursa(job #261478)
#include<stdio.h>
int a[100005],b[100005];
int n,m;
/*void adunare()
{
}*/
void actualizare(int i,int x)
{int j;
for(j=i;j<=n;j++)
b[j]+=x;
}
void suma(int i,int j)
{
printf("%d \n",(b[j]-b[i-1]));
}
void poz(int k)
{int i,ok=0;
for(i=1;i<n-1;i+=3)
{ if(b[i]==k)
{printf("%d \n",i);ok=1;}
if(b[i]>k)
{if(b[i-1]==k)
{printf("%d \n",i-1);ok=1;}
if(b[i-2]==k)
{printf("%d \n",i-2);ok=1;}
break;
}
}
if(ok==0&&b[n]==k)
{printf("%d \n",n);ok=1;
}
if(ok==0&&b[n-1]==k)
{printf("%d \n",n-1);ok=1;
}
if(ok==0)
printf("-1 \n");
}
int main()
{int i;
int x,y,z;
freopen("aib.in","r",stdin);
freopen("aib.out","w",stdout);
scanf("%d %d",&n,&m);
scanf("%d",&x);
a[1]=x;
b[1]=x;
for(i=2;i<=n;i++)
{scanf("%d",&x);
a[i]=x;
b[i]+=b[i-1]+x;
}
for(i=0;i<m;i++)
{
scanf("%d",&x);
if(x==0)
{scanf("%d %d",&y,&z);
actualizare(y,z);
}
if(x==1)
{ scanf("%d %d",&y,&z);
suma(y,z);
}
if(x==2)
{scanf("%d",&y);
poz(y);
}
}
return 0;
}