1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std;
template<typename T> inline void read(T &x) { char ch=getchar(); T f=1; x=0; while(!('0'<=ch&&ch<='9')) { if(ch=='-') f=-1; ch=getchar(); } while('0'<=ch&&ch<='9') { x=(x<<3)+(x<<1)+ch-48; ch=getchar(); } x*=f; } int n; long long ans; const int inf=0x3f3f3f3f; const int res[4][4]={0,0,0,0, 0,0,3,4, 0,3,0,inf, 0,4,inf,0,}; int a[110]; int main() { read(n); for(int i=1;i<=n;++i) { read(a[i]); } for(int i=2;i<=n;++i) { ans+=res[a[i-1]][a[i]]; } for(int i=3;i<=n;++i) { if(a[i-1]==1&&a[i-2]==3&&a[i]==2) --ans; } if(ans>=inf) { printf("Infinite\n"); } else { printf("Finite\n"); cout<<ans; } return 0; }
|