Submission #686625

#TimeUsernameProblemLanguageResultExecution timeMemory
686625toma_ariciuMoney (IZhO17_money)C++17
100 / 100
1188 ms58080 KiB
/// banii banii banii /// 2 locuri in masina ca milionarii #include <iostream> #include <set> using namespace std; const int maxN = 1000005; int n, v[maxN], ans = 1; set <int> values; int solve(int poz) { auto it = values.upper_bound(v[poz]); int aux, maxval; if(it == values.end()) maxval = maxN; else maxval = (*it); bool ok = 1; for(aux = poz + 1; aux <= n; aux++) if(v[aux] < v[aux - 1] || v[aux] > maxval) {ok = 0; break;} for(int i = poz; i < aux; i++) values.insert(v[i]); return aux + ok; } int main() { cin >> n; for(int i = 1; i <= n; i++) cin >> v[i]; int poz = n + 1; for(int i = 2; i <= n && (poz == n + 1); i++) if(v[i] < v[i - 1]) poz = i; for(int i = 1; i < poz; i++) values.insert(v[i]); while(poz <= n) { poz = solve(poz); ans++; } cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...