Submission #38234

#TimeUsernameProblemLanguageResultExecution timeMemory
38234antimirageMoney (IZhO17_money)C++14
100 / 100
896 ms21548 KiB
#include <iostream> #include <vector> #include <deque> #include <math.h> #include <set> #include <iomanip> #include <time.h> #include <list> #include <stdio.h> #include <queue> #include <map> #include <algorithm> #include <assert.h> #include <memory.h> #define mk make_pair #define sc second #define fr first #define pb emplace_back #define all(s) s.begin(), s.end() #define sz(s) ( (int)s.size() ) using namespace std; const int N = 1e6 + 5; int n, ar[N], cur, ans, l = 1, Pos = 1e9 + 7, t[N * 4], mx = 1e6 + 1; void update (int pos, int v = 1, int tl = 1, int tr = mx) { if (tl == tr) t[v] = tl; else { int tm = (tl + tr) >> 1; if (pos <= tm) update( pos, v + v, tl, tm ); else update( pos, v + v + 1, tm + 1, tr); t[v] = min(t[v + v] , t[v + v + 1]); } } inline int min(int a, int b) { return a < b ? a : b; } int get (int val, int v = 1, int tl = 1, int tr = mx) { if (t[v] == t[0] || val > tr) return 1e9 + 7; if (tl >= val) return t[v]; int tm = (tl + tr) >> 1; return min( get( val, v + v, tl, tm ), get ( val, v + v + 1, tm + 1, tr ) ); } main () { memset(t, 0x3f3f3f, sizeof(t)); scanf("%d", &n); for (int i = 1; i <= n; i++) scanf("%d", &ar[i]); cur = ar[1]; int i = 1; while (i <= n) { if ( ar[i] < ar[i - 1] || Pos < ar[i] ) { ans++; cur = ar[i]; while ( l < i ) update( ar[l] ), l++; Pos = get( cur + 1 ); } i++; } printf("%d\n", ans + 1); } /** 8 1 17 13 18 4 15 19 17 **/

Compilation message (stderr)

money.cpp:60:7: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main ()
       ^
money.cpp: In function 'int main()':
money.cpp:64:20: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &n);
                    ^
money.cpp:67:28: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &ar[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...