给你n个数,都不同,每次可以从左边或者右边取一个数,要求每次取的数都要比上一次取的数大,问最多能取多少个数。
贪心,模拟着取就行了
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn=2e5+5;
int a[maxn],cnt;std::vector<char> v;
signed main()
{
int n;scanf("%d",&n);int l=1,r=n;
for(int i=1;i<=n;i++)scanf("%d",&a[i]);int tmp=0;
while(l<=r)
{
if(a[l]<a[r])
{
if(a[l]>tmp){cnt++;v.emplace_back('L');tmp=a[l++];}
else if(a[r]>tmp){cnt++;v.emplace_back('R');tmp=a[r--];}
else break;
}
else
{
if(a[r]>tmp){cnt++;v.emplace_back('R');tmp=a[r--];}
else if(a[l]>tmp){cnt++;v.emplace_back('L');tmp=a[l++];}
else break;
}
}
cout<<cnt<<endl;
for(auto &i:v)cout<<i;cout<<endl;
return 0;
}