Cod sursa(job #1745350)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 21 august 2016 17:51:51
Problema Nunta Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#define BAZA 10
#define MAXCIF 209
char dp[2][MAXCIF];
unsigned char nr[2];
inline unsigned char getmax(unsigned char a,unsigned char b){
   if(a<b) return b;
   return a;
}
int main(){
   FILE*fi,*fout;
   short n,i;
   unsigned char j;
   char t;
   fi=fopen("nunta.in" ,"r");
   fout=fopen("nunta.out" ,"w");
   fscanf(fi,"%d" ,&n);
   if(n==1)
     fprintf(fout,"1");
   if(n==2)
     fprintf(fout,"2");
   if(n>2){
     dp[1][0]=1;
     dp[0][0]=2;
     nr[0]=1;
     nr[1]=1;
     for(i=3;i<=n;i++){
         t=0;
         for(j=0;j<getmax(nr[i&1],nr[1-i&1])||t>0;j++){
            t=t+dp[i&1][j]+dp[1-i&1][j];
            dp[i&1][j]=t%BAZA;
            t/=BAZA;
         }
         nr[i&1]=j;
     }
     fprintf(fout,"%d" ,dp[n&1][nr[n&1]-1]);
     for(i=nr[n&1]-2;i>=0;i--)
        fprintf(fout,"%d" ,dp[n&1][i]);
   }
   fclose(fi);
   fclose(fout);
   return 0;
}