Pagini recente » Cod sursa (job #2871662) | Cod sursa (job #2179587) | Cod sursa (job #2417023) | Cod sursa (job #3253830) | Cod sursa (job #3231438)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100001
int main(int argc,char **argv)
{
FILE *f1=fopen("hotel.in","r"),*f2=fopen("hotel.out","w");
if(!f1||!f2)
{
perror(NULL);
exit(-1);
}
int n,p;
fscanf(f1,"%d %d",&n,&p);
int *hotel=malloc(MAX*sizeof(int));
memset(hotel,0,MAX*sizeof(int));//toate camerele sunt libere initial
int cons_max=n;//nr max de camere consecutive libere
for(int i=0;i<p;i++)
{
int tip,st,m;//st-nr de inceput al camerei,m-nr membrii
fscanf(f1,"%d",&tip);
if(tip==1)
{
fscanf(f1,"%d %d",&st,&m);
memset(hotel+st,1,m*sizeof(int));
}
else if(tip==2)
{
fscanf(f1,"%d %d",&st,&m);
memset(hotel+st,0,m*sizeof(int));
}
else if(tip==3)
{
int curent=0,maxim=0;
for(int j=0;j<n;j++)
if(hotel[j]==0)
curent++;
else
{
if(curent>maxim) maxim=curent;
curent=0;
}
if(curent>maxim) maxim=curent;
fprintf(f2,"%d\n",maxim);
}
}
fclose(f1);
fclose(f2);
free(hotel);
return 0;
}