#include <stdio.h>
void Enqueue(int *Q,int *f,int *r,int item)
{
if(*r==-1)
(*f)++;
Q[++(*r)]=item;
}
int Dequeue(int *Q,int *f,int *r)
{
int ret=Q[*f];
if(*f==*r)
{
*f=-1;*r=-1;
}
else
(*f)++;
return ret;
}
int isEmpty(int *r)
{
if(*r==-1)
return 1;
return 0;
}
void printPascalTriangle(int n)
{
int line=1,Q[50]={0},f=-1,r=-1,prev,t;
Enqueue(Q,&f,&r,1);
Enqueue(Q,&f,&r,0);
prev=0;
while(line!=n)
{
t = Dequeue(Q,&f,&r);
if( !t )
{
line++;
prev = 0;
Enqueue(Q,&f,&r,1);
if(!isEmpty(&r))
Enqueue(Q,&f,&r,0);
}
else
{
Enqueue(Q,&f,&r,prev+t);
prev = t;
}
}
}
int main()
{
int n;
printPascalTriangle(n);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIEVucXVldWUoaW50ICpRLGludCAqZixpbnQgKnIsaW50IGl0ZW0pCnsKCWlmKCpyPT0tMSkKCQkoKmYpKys7CglRWysrKCpyKV09aXRlbTsKfQoKaW50IERlcXVldWUoaW50ICpRLGludCAqZixpbnQgKnIpCnsKCWludCByZXQ9UVsqZl07CglpZigqZj09KnIpCgl7CgkJKmY9LTE7KnI9LTE7Cgl9CgllbHNlCgkJKCpmKSsrOwoJcmV0dXJuIHJldDsKfQoKaW50IGlzRW1wdHkoaW50ICpyKQp7CglpZigqcj09LTEpCgkJcmV0dXJuIDE7CglyZXR1cm4gMDsKfQoKdm9pZCBwcmludFBhc2NhbFRyaWFuZ2xlKGludCBuKQp7CglpbnQgbGluZT0xLFFbNTBdPXswfSxmPS0xLHI9LTEscHJldix0OwoJCglFbnF1ZXVlKFEsJmYsJnIsMSk7CglFbnF1ZXVlKFEsJmYsJnIsMCk7CgoJcHJldj0wOwoJd2hpbGUobGluZSE9bikKCXsKCQl0ID0gRGVxdWV1ZShRLCZmLCZyKTsKCgkJaWYoICF0ICkKCQl7CgkJCWxpbmUrKzsKCQkJcHJldiA9IDA7CgkJCUVucXVldWUoUSwmZiwmciwxKTsKCgkJCWlmKCFpc0VtcHR5KCZyKSkKCQkJCUVucXVldWUoUSwmZiwmciwwKTsKCgkJCXByaW50ZigiXG4iKTsKCQl9CgkJZWxzZQoJCXsKCQkJcHJpbnRmKCIlZCAiLCB0KTsKCQkJRW5xdWV1ZShRLCZmLCZyLHByZXYrdCk7CgkJCXByZXYgPSB0OwoJCX0KCX0KfQoKaW50IG1haW4oKQp7CglpbnQgbjsKCXNjYW5mKCIlZCIsJm4pOwoKCXByaW50UGFzY2FsVHJpYW5nbGUobik7CglyZXR1cm4gMDsKfQ==