Go: package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
)

var sc = bufio.NewScanner(os.Stdin)

func nextInt() int {
	sc.Scan()
	n, _ := strconv.Atoi(sc.Text())
	return n
}

func main() {
	sc.Split(bufio.ScanWords)
	N := nextInt()
	max, cnt := 0, 0
	for i := 0; i < N; i++ {
		cnt++
		if nextInt() == 0 {
			cnt = 0
		}
		if cnt > max {
			max = cnt
		}
	}
	fmt.Println(max + 1)
}

C++: #include <bits/stdc++.h>

#define INF (2e9)
#define FOR(i, a, b) for (ll (i) = (a); (i) < (b); ++(i))
#define REP(i, n) FOR(i, 0, n)

using namespace std;

template<class T>
bool chmax(T& a, const T& b) {
    if (a < b) {
        a = b;
        return true;
    }
    return false;
}

template<class T>
bool chmin(T& a, const T& b) {
    if (b < a) {
        a = b;
        return true;
    }
    return false;
}

using ll = long long;
using ld = long double;

#define ALL(x) (x).begin(), (x).end()
template<class T>
using vc = vector<T>;
using vi = vc<ll>;
using vvi = vc<vi>;

template<class T>
using va = valarray<T>;
using vad = va<ld>;
using vai = va<ll>;

using pii = pair<ll, ll>;

vi Read(ll n) {
    auto      v = vi(n);
    for (auto i = std::size_t(0); i < n; ++i) {
        cin >> v[i];
    }
    return v;
}

template<class T>
void DumpRow(const T& A) {
    for (const auto& value : A)
        cout << value << "\n";
}

template<class T>
void DumpColumn(const T& A) {
    auto isFirst = true;
    for (const auto& value : A) {
        if (isFirst) {
            cout << value;
            isFirst = false;
        } else {
            cout << " " << value;
        }

    }
    cout << endl;
}

int main() {
    cin.tie(0);
    ios::sync_with_stdio(false);
    cout << setprecision(20) << fixed;

    int n;
    cin >> n;
    const auto a = Read(n);

    int ans = 1;
    int count = 1;
    REP(i, n - 1){
        if (a[i] == 1) ++count;
        if (a[i + 1] == 0){
            chmax(ans, count);
            count = 1;
        }
    }
    if (a[n-1] == 1) ++count;
    chmax(ans, count);

    cout << ans << endl;
    return 0;
}

C++: #include<iostream>
#include<string>
#include<algorithm>	
#include<cmath>
using namespace std;
int main() {
	int n, sum = 0, ans = 0;
	bool a; cin >> n;
	for(int h = 0; h < n; h++){
		cin >> a;
		if (a == 0) {
			sum = 0;
		}
		if (a == 1) {
			sum++;
			ans = max(ans, sum);
		}
	}
	cout << ans + 1 << endl;
}

C++: #include <bits/stdc++.h>
#define GET_MACRO(_1,_2,_3,_4,_5,NAME,...) NAME
#define pr(...) GET_MACRO(__VA_ARGS__,pr5,pr4,pr3,pr2,pr1)(__VA_ARGS__)
#define pr1(a) (#a)<<"="<<(a)
#define pr2(a,b) pr1(a)<<", "<<pr1(b)
#define pr3(a,b,c) pr2(a,b)<<", "<<pr1(c)
#define pr4(a,b,c,d) pr3(a,b,c)<<", "<<pr1(d)
#define pr5(a,b,c,d,e) pr4(a,b,c,d)<<", "<<pr1(e)
#define int long long
#define double long double
using namespace std;
const int N = 100010;
const int INF = 1LL<<55;
const int mod = (1e9)+7;
const double EPS = 1e-8;
const double PI = 6.0 * asin(0.5);
typedef pair<int,int> P;
typedef long long ll;
template<class T> T Max(T &a,T b){return a=max(a,b);}
template<class T> T Min(T &a,T b){return a=min(a,b);}
ostream& operator<<(ostream& o,P p){return o<<"("<<p.first<<","<<p.second<<")";}
istream& operator>>(istream& i,P &p){return i>>p.first>>p.second;}
ostream& operator<<(ostream& o,vector<auto> &a){int i=0;for(auto t:a)o<<(i++?" ":"")<<t;return o;}
istream& operator>>(istream& i,vector<auto> &a){for(auto &t:a)i>>t;return i;}
void prArr(auto a,string s=" "){int i=0;for(auto t:a)cout<<(i++?s:"")<<t;cout<<endl;}


signed main(){
  int n;
  cin>>n;
  vector<int> A(n);
  cin>>A;

  int mx = 0;
  for(int i=0;i<n;i++){
    int j = i;
    while(j < n && A[j] == 1) j++;
    Max(mx,j - i);
  }

  cout<<mx+1<<endl;

  
  return 0;
}

C++: #include<bits/stdc++.h>
using namespace std;

int main(){
	int i, j, N, A[110] = {}, s = 0, a = 0;
	cin>>N;
	for(i = 1; i <= N; i++){
		cin>>A[i];
	}
	
	for(i = 1; i <= N + 1; i++){
		if(A[i] == 1){
			s++;
		} else {
			if(s > a)a = s;
			s = 0;
		}
	}
	cout<<a + 1<<endl;
	return 0;
}

C++: // http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0642



#include<iostream>
 using namespace std; //標準名前空間を使用


    int main(){

    int sugorokunomasu[110] ;
    int N ;
    int saidairenzokusuucount = 0 ; // 1の最大連続数カウント
    int saidairenzokusuucountmax = 0 ; // 1の最大連続数の最大値

    cin >> N ;

    cin >> sugorokunomasu[1] ; //最初のマスの読み込み

            for (int i = 2 ; i <= N ; i = i + 1 ){
             cin >> sugorokunomasu[i] ; //すごろくのマスの読み込み

                    if(sugorokunomasu[i] == 1){ // すごろくのマスに1が出てきた場合

                        if(i == N){ //最終マスが1である場合の処理
                        // 最終マスが1であれば、最大連続数としてカウントしない
                        }else{
                        saidairenzokusuucount =  saidairenzokusuucount + 1 ; //そうでなければ、1の最大連続数カウントに1を+
                        }

                        if(saidairenzokusuucount > saidairenzokusuucountmax) // 1の最大連続数の最大値を更新されているかの判定
                        { 
                        saidairenzokusuucountmax = saidairenzokusuucount ; //更新されていれば、1の最大連続数の最大値を更新
                        }else{
                        //最大値を更新しない場合は何もしない
                        }
                        


                    }else{ //すごろくのマスに0が出てきた場合

                        if(saidairenzokusuucount > saidairenzokusuucountmax) // 1の最大連続数の最大値を更新されているかの判定
                        { 
                        saidairenzokusuucountmax = saidairenzokusuucount ; //更新されていれば、1の最大連続数の最大値を更新
                        saidairenzokusuucount = 0 ; //1の最大連続数カウントをフラッシュして0に
                        }else{
                        //最大値を更新しない場合は何もしない
                        saidairenzokusuucount = 0 ; //1の最大連続数カウントをフラッシュして0に
                        }

                    
                    
                    }

                


            }


    cout << saidairenzokusuucountmax + 1 << endl ;

    /* デバッグ用
    cout << sugorokunomasu[1] ;
    cout << sugorokunomasu[2] ;
    cout << sugorokunomasu[3] ;
    cout << sugorokunomasu[4] ;
    cout << sugorokunomasu[5] ;
    */

    }

C++: #include <iostream>
using namespace std;
#include <vector>
#include <sstream>


int main(void){
    // 自分の得意な言語で
    // Let's チャレンジ！！

    string str;
    int N;
    int count = 0;
    int ConsecutiveOnes = 0;
    int Max_Ones = 0;
    int ThisNum
    while(getline(cin, str)){
        stringstream ss;
        ss << str;
        if(count == 0){
            ss >> N;
        }
        else{
            for(int i = 0;i < N;i++){
                ss >> ThisNum;
                if(ThisNum){
                    ConsecutiveOnes++;
                }
                else{
                    ConsecutiveOnes = 0;
                }
                if(ConsecutiveOnes > Max_Ones){
                    Max_Ones = ConsecutiveOnes;
                }
            }
        }
        
        count++;
    }
    
    
    
    cout << Max_Ones + 1 << endl;
    return 0;
}

C++: #include <iostream>
#include <algorithm>
#include <cstdio>
#include <string>
#include <cstring>
#include <vector>
#include <utility>
#include <functional>
#include <cmath>
#include <map>
#define rep(i,n)for(int i=0;i<(n);i++)
using namespace std;
typedef long long ll;

int main() {
	int n; cin >> n;
	vector<int>v{ 0 };
	for (int i = 1; i <= n; i++) {
		int a; cin >> a;
		if (a == 0)v.push_back(i);
	}
	v.push_back(n + 1);
	int Max = 0;
	rep(i, v.size() - 1) {
		Max = max(Max, v[i + 1] - v[i]);
	}
	cout << Max << endl;
}

C++: #include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
int cl(int a, int b) {
	return (a - (a%b)) / b;//b=0だと積む
}
int up(int a, int b) {
	return cl(a + b - 1, b);//b=0だと積む
}
int main() {
	int n, b, c, d; int ans = 1;
	cin >> n;
	vector<int> a(n,0);
	for (int i = 0; i < n; i++) {
		cin >> a[i];
	}
	int che = 1;
	for (int i = 0; i < n; i++) {
		if (a[i] == 1) {
			che++;
		}
		else {
			che = 1;
		}
		ans = max(ans, che);
	}
	cout << ans << endl;
}