题意:有n个数,将其分组使整个数列排序后每组中的数仍在该组中,求最多的分组数。
代码很易懂
#include <iostream> #include <algorithm> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <ctime> using namespace std; pair<int,int> a[110000]; int main() { int i,Max=0,Ans=0,n; cin >> n; for(i=1;i<=n;++i) { cin >> a[i].first; a[i].second=i; } sort(a+1,a+n+1); for(i=1;i<=n;++i) { if(a[i].second>Max)Max=a[i].second; if(i>=Max)Ans++; } cout << Ans << endl; return 0; }