版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiang_6/article/details/89738852
直接模拟从左右两边分别选的过程
先选小的,不会出现一样大的,选的时候判断是否大于已经选过的
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
typedef long long ll;
const int maxn = 2e5 + 7;
int n;
int a[maxn];
int main() {
scanf("%d", &n);
for(int i = 1; i <= n; ++i) {
scanf("%d", &a[i]);
}
int l = 1, r = n;
vector<char> ans;
int t = 0;
while(l <= r) {
if(l == r) {
if(a[l] > t) ans.push_back('L');
break;
}
if(a[l] < a[r]) {
if(a[l] > t) {
ans.push_back('L');
t = a[l];
l++;
}
else if(a[r] > t){
ans.push_back('R');
t = a[r];
r--;
}
else break;
}
else if(a[l] > a[r]) {
if(a[r] > t) {
ans.push_back('R');
t = a[r];
r--;
}
else if(a[l] > t){
ans.push_back('L');
t = a[l];
l++;
}
else break;
}
}
cout << ans.size() << endl;
for(auto i : ans) {
printf("%c", i);
}
return 0;
}