Pagini recente » Cod sursa (job #1387513) | Profil mgpaduraru | Cod sursa (job #32124) | Cod sursa (job #3292074) | Cod sursa (job #655129)
Cod sursa(job #655129)
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
#define max(a,b) ((a) > (b) ? (a) : (b))
int main()
{
vector<unsigned int> v;
{
ifstream f("operatii.in");
unsigned int N;
f >> N;
v.push_back(0);
while(N--)
{
int t; f >> t; v.push_back(t + 1);
}
v.push_back(0);
}
unsigned int sol = 0;
{
stack <unsigned int> S;
for(vector<unsigned int>::iterator e = v.begin() ; e != v.end() ; ++e)
{
if(S.size() >= 2)
while(S.top() > *e) // (S.varf - 1 , S.varf , el.c.)
{
int c = S.top();
S.pop();
sol += c - max(S.top(),*e);
}
S.push(*e);
} //in final ar trebui sa ramana doua valori "0" in stiva S
}
{
ofstream g("operatii.out");
g << (--sol);
}
}