617B - Chocolate - CodeForces Solution


combinatorics *1300

Please click on ads to support us..

Python Code:

n=int(input())
l=list(map(int,input().split()))
s=0
k=1
if 1 not in l: print(0)
else:
    for i in range(l.index(1),len(l)):
        if l[i]==0:
            s+=1
        else:
            k*=s+1
            s=0
    print(k)

C++ Code:

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
#define ll long long 
#define lld long double
#define for0(i,n) for(int i=0; i<n; i++)
#define for1(i,n) for(int i=1; i<=n; i++)
#define loop(i,a,b) for(int i=a; i<b; i++)
#define bloop(i,a,b) for(int i=a; i>=b; i--)
#define tc(t) int t; cin>>t; while(t--)
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
#define vi vector<int>
#define vll vector<ll>
#define pi pair<int,int>
#define vpi vector<pi>
#define all(a) a.begin(),a.end()
#define rall(a) a.end(),a.begin()

#define py cout<<"YES\n";
#define pn cout<<"NO\n";
#define PI 3.141592653589793238
#define mod (int) 1000000007
#define infinity (int) (1e18)


bool isPerfectSquare(long double x)
{
    // Find floating point value of
    // square root of x.
    if (x >= 0) {
  long long sr = sqrt(x);
        // if product of square root
        //is equal, then
        // return T/F
        return (sr * sr == x);
    }
    // else return false if n<0
       return false;
}


bool prime (long long int n) {
  bool prime = 1;
  if (n == 1) {
      return 0;
  }
  else {
      for (long long int i = 2; i <= n/2 ; i++) {
          if (n % i == 0) {
              prime = 0;
              break ;
          } 
      }
        return prime;
  }
}


// precompute number is prime or not using seive 
// const int k=1e7;
// vector<bool> v(k,1);

// // paste it inside main fun|
// v[0]=v[1]=false;           <-from here
//  for(int i=2;i<k;i++){
//     if(v[i]==true)
//     for(int j=2*i; j<k; j=j+i){
//         if(v[j]==true)
//         v[j]=false;
//     }
//  }

int main(){
 int n;
 cin>>n;
 ll ans;

  vi arr(n);
  int zer=1;
  for0(i,n){
    cin>>arr[i];
    if(arr[i]==1)
    zer=0;
  }

  if(zer==1){
    ans=0;
  }
  else{
  int c=0;
   ans=1;
  int flag=0;
  for0(i,n){
    if(arr[i]==0  && flag==1){
      c++;
    }
    else if(arr[i]==1){
        flag=1;
        ans*= (c+1);
        c=0;
    }
  }
  }

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


Comments

Submit
0 Comments
More Questions

1302. Deepest Leaves Sum
1209. Remove All Adjacent Duplicates in String II
994. Rotting Oranges
983. Minimum Cost For Tickets
973. K Closest Points to Origin
969. Pancake Sorting
967. Numbers With Same Consecutive Differences
957. Prison Cells After N Days
946. Validate Stack Sequences
921. Minimum Add to Make Parentheses Valid
881. Boats to Save People
497. Random Point in Non-overlapping Rectangles
528. Random Pick with Weight
470. Implement Rand10() Using Rand7()
866. Prime Palindrome
1516A - Tit for Tat
622. Design Circular Queue
814. Binary Tree Pruning
791. Custom Sort String
787. Cheapest Flights Within K Stops
779. K-th Symbol in Grammar
701. Insert into a Binary Search Tree
429. N-ary Tree Level Order Traversal
739. Daily Temperatures
647. Palindromic Substrings
583. Delete Operation for Two Strings
518. Coin Change 2
516. Longest Palindromic Subsequence
468. Validate IP Address
450. Delete Node in a BST