Cod sursă (job #600901)

Utilizator avatar AndreiCroitoru Andrei Croitoru AndreiCroitoru IP ascuns
Problemă Ruleta1 ( clasa a 6-a ) Compilator cpp-32 | 2,18 kb
Rundă Arhiva de probleme Status evaluat
Dată 27 iun. 2021 13:08:04 Scor 80
/*#include <bits/stdc++.h>
using namespace std;
int v[ 10001 ];
int cv[ 10001 ];
int main()
{
	ifstream cin ("ruleta1.in");
	ofstream cout ("ruleta1.out");
	int n;
	cin >> n;
	for( int i = 1; i <= n; i++ )
	{
		cin >> v[i];
	}
	int flag = true;
	int cnt = 0,ans = 0;
	while(flag == true)
	{
		for ( int i = 1; i <= n; i++)
			cv[i] = v[i];
		for( int i = 1;i <= n; i++ )
		{
			if( v[i - 1] <= v[i])
				v[i] -= v[i-1];
		}
		if( v[n] <= v[1] )
			v[n] -= v[1];
		flag = false;
		for ( int i = 1; i <= n; i++ )
		{
			if( v[i] != cv[i] )
				flag = true;
		}
		ans++;
	}
	for( int i = 1; i <= n; i++)
		cnt += (v[i] != 0);
	
	cout << ans + 1 << " " <<cnt;
}
*/
/*
#include <bits/stdc++.h>
using namespace std;
int v[ 10001];
int poz [ 10001 ];
int main()
{
	int n;
	int z = 0;
	cin >> n;
	for( int i = 1;i <= n;i++ )
	{
		cin >> v[i];
		poz[i] = i;
	}
	bool flag = true;
	int k;
	poz[n] = 1; k = n;
	int i = 0;
	while( flag == true )
	{
		if( poz[i] == (i + 1)%n)
		  {
			  if( v[poz[i]] >= v[i] and v[i] )
			  {
				  v[poz[i]] = v[ poz[i] ]- v[i];
				  int ok = 1;
				  if ( v[poz[i]] + z == 0)
				  {
					  k = i;
					  z = 1;
				  }
				  else if( v[i] <= v[poz[i]] )
				  {
					 poz[k] = i;
					 z = 0;
					 k = n;
				  }
			  } 
		  }		  
		if( u[i] < i)
		{
			r++;
			if( !ok ) 
			{
				flag = false;
			}
			else 
			ok = 0;
		}
		i = paz[i];
	}
	int ans = 0;
	for ( int i = 1; i <= n; i ++ )
	{
		ans += (v[i] != 0);
	}

cout << r << " " << ans;	
}*/
#include <fstream>
 
using namespace std;
ifstream cin("ruleta1.in");
ofstream cout("ruleta1.out");
int n,i,v[10005],u[10005],r,z,t,k,aux;
bool ok,s;
int main()
{
	cin>>n;
	for(i=0;i<n;i++)
	{
		cin>>v[i];
		u[i]=i+1;
	}
	k=n;
	u[n-1]=0;
	i=0;
	while(ok==0)
	{
		if(u[i]==(i+1)%n&&v[u[i]]>=v[i]&&v[i])
		{
			s=1;
			v[u[i]]-=v[i];
			if(v[u[i]]+t==0)
			{
				k=i;
				t=1;
			}
			else if(v[i]<=v[u[i]])
			{
				u[k]=i;
				t=0;
				k=n;
			}
		}
		if(u[i]<i)
		{
			r++;
			if(s==0)
				ok=1;
			else
				s=0;
		}
		i=u[i];
	}
	cout<<r<<' ';
	for(i=0;i<n;i++)
		if(v[i])
			z++;
	cout<<z;
	return 0;
}