Cod sursa(job #473024)

Utilizator LauraTudorTudor Laura LauraTudor Data 27 iulie 2010 17:56:38
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 5.59 kb



#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;
}*/