Submission #91123

#TimeUsernameProblemLanguageResultExecution timeMemory
91123emil_physmathMoney (IZhO17_money)C++14
100 / 100
1498 ms95396 KiB
#include <iostream> #include <stdio.h> #include <algorithm> #include <set> using namespace std; int a[1000005], dp[1000005], l[1000005]; int main() { int n; cin>>n; for (int k=0; k<n; k++) scanf("%d", a+k); set<int>curSorted; curSorted.insert(0); curSorted.insert(10000000); for (int i=0; i<n; i++) { l[i]=i; if (i && a[i-1]<=a[i]) l[i]=l[i-1]; for (int k=(i?l[i-1]:0); k<l[i]; k++) curSorted.insert(a[k]); dp[i]=i+1; auto rBound=curSorted.lower_bound(a[i]); int minVal=*--rBound; int k=lower_bound(a+l[i], a+i+1, minVal)-a; for (k; k<=i; k++) dp[i]=min(dp[i], (k?dp[k-1]:0)+1); } cout<<dp[n-1]<<'\n'; //int i=0, ans=0; //set<int> curSorted; //curSorted.insert(0); //curSorted.insert(10000000); //while (i<n) //{ // ans++; // int j=i; // while (j+1<n && a[j+1]>a[j]) // j++; // auto rBound=curSorted.upper_bound(a[i]); // j=upper_bound(a+i, a+j+1, *rBound)-a; // for (int k=i; k<j; k++) // curSorted.insert(a[k]); // i=j; //} //cout<<ans<<'\n'; char I; cin >> I; return 0; } /* 9 2 5 4 3 5 6 4 6 7 5 1 2 4 3 5 */

Compilation message (stderr)

money.cpp: In function 'int main()':
money.cpp:29:9: warning: statement has no effect [-Wunused-value]
   for (k; k<=i; k++)
         ^
money.cpp:14:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", a+k);
   ~~~~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...