Cod sursa(job #562150)

Utilizator morlockRadu Tatomir morlock Data 22 martie 2011 14:32:23
Problema Operatii Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <stdlib.h>
#define nmax 1000000
using namespace std;

ifstream in("operatii.in"); ofstream out("operatii.out");
int v[nmax], a[nmax], n, i, j, pin, psf, nr=0;

int valid (int n)
{ int ok=0;
	
  for (int k=1; k<=n; k++)
	  if ( a[k] != v[k] ) { ok=1; break; }

	if (ok == 1) return 1; else return 0;  
}


void incrementare(int pin, int psf)
{
	nr++;
	for (int k=pin; k<=psf; k++)
		a[k]++;	
}

void operatii(int n)
{
	i=1;
	while (i <= n)
	{
		if (a[i] != v[i])
		{
			pin=i;
			while (a[i] != v[i])
			{
				psf=i;
				i++;
			}
            incrementare(pin,psf);
		}
		i++;
	}
	
	if (valid(n)) operatii(n);
}	

int main()
{
	in>>n;
	 for (int i=1; i<=n; i++)
		in>>v[i];
	
	
   operatii(n);

	out<<nr;
	
	
	in.close();
	out.close();
return 0;	
}