Pagini recente » Monitorul de evaluare | Cod sursa (job #3291776) | Cod sursa (job #2913845) | Cod sursa (job #2308709) | Cod sursa (job #1712087)
# include <fstream>
# include <algorithm>
# include <vector>
using namespace std;
ifstream f ( "twoton.in" );
ofstream g ( "twoton.out" );
int main()
{
int n; f >> n;
// Retinem in doi vectori a, val; numarul de pasi pe care in face functia apelata
// respectiv valoarea returnata de fuctie apelata cu ( i );
vector < int > v( n ), a( n ), val( n );
for ( int i = 0; i < n; ++ i ) {
f >> v[i];
}
a[n - 1] = 1; // ultimul element face un pas
val[n - 1] = v[n - 1]; // pentru ultimul element functia va returna valoare sa
for ( int i = n - 2; i >= 0; -- i ) {
a[i] = a[i + 1] + 1; // functia face cu un pas mai mult decat pentru elementul
// care se afla dupa el
if ( v[i] < val[i + 1] ) {
val[i] = v[i]; // functia se opreste
}
else {
a[i] = a[i] + a[i + 1];
val[i] = val[i + 1];
}
}
g << a[0];
return 0;
}