Cod sursa(job #3231439)

Utilizator catalinaionela77Catalina Ionela Florescu catalinaionela77 Data 26 mai 2024 14:05:49
Problema Hotel Scor 50
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.32 kb
#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=1;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;
}