Cod sursa(job #2680651)

Utilizator Remus.RughinisRemus Rughinis Remus.Rughinis Data 3 decembrie 2020 20:45:00
Problema Deque Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <stdio.h> ///Se poate sa ne ceara sa facem pop daca nu avem nici un element in stive?!?
#include <stdlib.h>
#include <ctype.h>

int s1[30000],s2[30000];
int main(){
  int n,i,i1,i2;
  char c;
  FILE *fin, *fout;
  fin=fopen("queue.in","r");
  fscanf(fin,"%d",&n);

  c=fgetc(fin);
  i1=0;
  i2=0;
  fout=fopen("queue.out","w");
  for(i=0;i<n;i++){
    while(c!='(')
      c=fgetc(fin);

    c=fgetc(fin); ///Daca e numar operatia e push, daca nu operatia e pop
    fprintf(fout,"%d:",i+1);
    if(isdigit(c)==1){
      while(i2>0){
        i2--;
        fprintf(fout," pop(2) push(1,%d)",s2[i2]);
        s1[i1]=s2[i2];
        i1++;
      }

      fprintf(fout," read(%d) push(1,%d)\n",c-'0',c-'0');
      s1[i1]=c-'0';
      i1++;

    } else{
      if(i1>0){
        while(i1>1){
          i1--;
          fprintf(fout," pop(1) push(2,%d)",s1[i1]);
          s2[i2]=s1[i1];
          i2++;
        }

        fprintf(fout," pop(1) write(%d)\n",s1[0]);
        i1--;
      } else{
        if(i2>0){
          i2--;
          fprintf(fout," pop(2) write(%d)\n",s2[i2]);
        } else
          fprintf(fout," pop(2) write(0)\n");
      }
    }
  }
  fclose(fin);
  fclose(fout);

  return 0;
}