Submission #91194

#TimeUsernameProblemLanguageResultExecution timeMemory
91194davitmargMoney (IZhO17_money)C++17
45 / 100
1581 ms25544 KiB
/* DEATH-MATCH Davit-Marg */ #include <iostream> #include <algorithm> #include <cmath> #include <vector> #include <string> #include <cstring> #include <map> #include <set> #include <queue> #include <deque> #include <stack> #include <iterator> #include <ctype.h> #include <stdlib.h> #include <fstream> #define mod 1000000007ll #define LL long long #define LD long double #define MP make_pair #define PB push_back using namespace std; int n,ans,a[1000006],l,it; stack<int> st; int t[4 * 1000006]; void update(int v,int l,int r,int pos) { if (l == r) { t[v] = l; return; } int m = (l + r) / 2; if (pos <= m) update(v * 2, l, m, pos); else update(v * 2 + 1, m + 1, r, pos); t[v] = min(t[v * 2], t[v * 2 + 1]); } int query(int v, int l, int r, int i,int j) { if (l == i && r==j) return t[v]; int m = (l + r) / 2; if (j <= m) return query(v * 2, l, m, i, j); else if (i >= m + 1) return query(v * 2 + 1, m + 1, r, i, j); else return min(query(v * 2, l, m, i, m), query(v * 2 + 1, m + 1, r, m + 1, j)); } int main() { cin >> n; ans = 1; for (int i = 1; i <= n; i++) scanf("%d", a+i); for (int i = 0; i <= 4 * 1000000 + 2; i++) t[i] = mod; update(1, 0, 1000000, 0); it = mod; for (int i = 1; i <= n; i++) { if ((a[i] < a[i - 1]) || (it != mod && it < a[i]) ) { l = a[i]; ans++; while (!st.empty()) { update(1, 0, 1000000, st.top()); st.pop(); } it = query(1,0,1000000,l+1, 1000000); } st.push(a[i]); } cout << ans << endl; return 0; } /* 6 1 3 5 2 4 6 */

Compilation message (stderr)

money.cpp: In function 'int main()':
money.cpp:64:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", a+i);
   ~~~~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...