#include <stdio.h>
int n,m;
int a[1500];
int main(){
int i,sum,ceva,b,c,j;
FILE *fin,*fout;
fin=fopen("datorii.txt","rt");
fout=fopen("datorii.out","wt");
fscanf(fin,"%d",&n);
fscanf(fin,"%d",&m);
for(i=0;i<n;i++)
fscanf(fin,"%d",&a[i]);
for(i=0;i<m;i++){
sum=0;
fscanf(fin,"%d",&ceva);
//printf("%d ",ceva);
fscanf(fin,"%d",&b);
//printf("%d ",b);
fscanf(fin,"%d",&c);
//printf("%d \n",c);
if(!ceva)
a[b-1]=a[b-1]-c;
else{
for(j=b-1;j<c;j++)
sum=sum+a[j];
fprintf(fout,"%d\n",sum);
}
}
return 0;
}
//#include <sys/types.h>
//#include "dirent.h"
//#include <errno.h>
//int main(int argc, char *argv[])
//{
// DIR *dip;
// struct dirent *dit;
// int i = 0;
/* check to see if user entered a directory name */
// if (argc < 2)
// {
// printf("Usage: %s <directory>\n", argv[0]);
// return 0;
// }
/* DIR *opendir(const char *name);
*
* Open a directory stream to argv[1] and make sure
* it's a readable and valid (directory) */
// if ((dip = opendir(argv[1])) == NULL)
// {
// perror("opendir");
// return 0;
// }
// printf("Directory stream is now open\n");
/* struct dirent *readdir(DIR *dir);
*
* Read in the files from argv[1] and print */
// while ((dit = readdir(dip)) != NULL)
// {
// i++;
// printf("\n%s", dit->d_name);
// }
// printf("\n\nreaddir() found a total of %i files\n", i);
/* int closedir(DIR *dir);
*
* Close the stream to argv[1]. And check for errors. */
// if (closedir(dip) == -1)
// {
// perror("closedir");
// return 0;
// }
// printf("\nDirectory stream is now closed\n");
// return 1;
//}*/
/*#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#define DECITIT 8192
int count_line=1;
char cautate[30][30];
typedef struct l{
char fisier[100];
int locatii[100];
int nr_locatii;
};
typedef struct nod{
int terminal;
int nr_loc;
l loc[10];
nod *vector[64];
};
nod *lista=NULL;
void initializare(){
lista=new nod;
int i;
for(i=0;i<64;i++)
lista->vector[i]=NULL;
lista->terminal=0;
}
void inserare(char cuv[100]){
int l,i,j;
int interval=0;
l=strlen(cuv);
nod *n=lista;
for(i=0;i<l;i++){
if(cuv[i]<58)
interval=48;
else
if(cuv[i]<91)
interval='A'-10;
else
if(cuv[i]=='_')
interval=59;
else
interval='a'-37;
if(n->vector[cuv[i]-interval]==NULL){
n->vector[cuv[i]-interval]=new nod;
for(j=0;j<64;j++)
n->vector[cuv[i]-interval]->vector[j]=NULL;
n->vector[cuv[i]-interval]->terminal=0;
n=n->vector[cuv[i]-interval];
}
else
n=n->vector[cuv[i]-interval];
}
//printf("%c",cuv[i]);
n->terminal=1;
n->nr_loc=0;
//printf("%d\n",l);
//printf("%d\n",cuv);
}
int cautare(char cuv[100],int mode){
int l,i,j,g=1,interval=0;
l=strlen(cuv);
nod *n=lista;
for(i=0;i<l;i++){
if(cuv[i]<58)
interval=48;
else
if(cuv[i]<91)
interval='A'-10;
else
if(cuv[i]=='_')
interval=59;
else
interval='a'-37;
if(n->vector[cuv[i]-interval]==NULL){
g=0;
break;
}
else
n=n->vector[cuv[i]-interval];
}
if(g&&n->terminal==1){
if (mode){
//printf("\ngasit cuvant:%s\t linia:%d\n",cuv,count_line);
if(!n->nr_loc){
n->nr_loc++;
strcpy(n->loc[n->nr_loc-1].fisier,"fisier.txt");
n->loc[n->nr_loc-1].nr_locatii=1;
n->loc[n->nr_loc-1].locatii[0]=count_line;
}
else{
n->loc[n->nr_loc-1].nr_locatii++;
n->loc[n->nr_loc-1].locatii[n->loc[n->nr_loc-1].nr_locatii-1]=count_line;
}
}
else{
if(!n->nr_loc)
printf("Variabila %s nici o aparitie!\n",cuv);
else{
printf("Variabile %s: \n",cuv);
int j;
for(j=0;j<n->nr_loc;j++){
printf("\tFisier:%s\n",n->loc[j].fisier);
for(i=0;i<n->loc[j].nr_locatii;i++)
printf("\t\tlinia: %d\n",n->loc[j].locatii[i]);
}
}
}
return 1;}
else{
return 0;}
// printf("Cuvantul nu a fost gasit\n\n\n");
}
char aux[100],aux2[100];
int main(){
FILE *fin,*fv;
char c,i2;
char buf[DECITIT];
int cititi;
int i=0,n=0,j=0,nr_cautate=0;
fin=fopen("cautate.txt", "rt");
fv=fopen("laura.txt","rt");
if(!fin)
printf("Eroare la deschiderea fisierului in care se gasesc variabilele!\n");
else{
initializare();
while(!feof(fin)){
fscanf(fin,"%s",aux2);
strcpy(cautate[nr_cautate],aux2);
nr_cautate++;
printf("\n%s\n",aux2);
inserare(aux2);
}
if(!fv)
printf("Eroare la deschiderea fisierului in care trebuie cautat!\n");
else{
while((cititi=fread(buf,1,DECITIT,fv))>0)
{
for(i=0;i<strlen(buf);i++){
if(isdigit(buf[i])||isalpha(buf[i])||buf[i]=='_'){
aux[j]=buf[i];
j++;
}
else
if(buf[i]=='\n'){
aux[j]='\0';
//printf("%s",aux);
cautare(aux,1);
j=0;
count_line++;
}
else{
aux[j]='\0';
//printf("%s",aux);
cautare(aux,1);
j=0;
}
}
}
//printf("\nNumar linii:%d\n",count_line);
for(i=0;i<nr_cautate;i++)
cautare(cautate[i],0);
}
}
return 0;
}*/