Cod sursa(job #3309302)

Utilizator Caleb_007Sighiartau Achim Caleb Caleb_007 Data 3 septembrie 2025 14:39:14
Problema Operatii Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <fstream>
#include <stdio.h>
using namespace std;

//ifstream cin("operatii.in");
ofstream cout("operatii.out");

int A[1000001];

long long s=0;

long long nrOp(int st, int dr)
{
    if(st<=dr)
    {
        int nmin=1e6;
        for(int i=st;i<=dr;i++)
        {
            if(nmin>A[i]) nmin=A[i];
           // cout<<A[i]<<" ";
        }
       //cout<<endl;
        for(int i=st;i<=dr;i++) A[i]-=nmin;
      //  for(int i=st;i<=dr;i++) cout<<A[i]<< " ";
      //  cout<<endl;
        long long s=nmin,l=0;
        for(int i=st;i<=dr;i++)
            if(A[i]!=0)
                l++;
            else
                s+=nrOp(i-l,i-1), l=0;
        if(l>0)
            s+=nrOp(dr-l+1,dr);
        return s;
    }
    return 0;

}


int main()
{
    int n;
    FILE *fd = fopen("operatii.in","r");
    fscanf(fd,"%d",&n);
    int l=0;

    for(int i=1;i<=n;i++)
        {
            fscanf(fd,"%d",&A[i]);
        }
    /*for(int i=1;i<=n;i++)
        {
            cout<<A[i]<<" ";
        }*/

    //cout<<endl;
    for(int i=1;i<=n;i++)
        if(A[i]==0)
            s=s+nrOp(i-l,i-1),l=0;
        else l++;
    s=s+nrOp(n-l+1,n);
    cout<<s;
	return 0;
}