#26WA求调
查看原帖
#26WA求调
531930
Southern_Dynasty楼主2022/5/20 22:43

我的代码 C1 都过了……但是 C2 挂了。

求调,不知道错在哪里。

#include<bits/stdc++.h>
#define gt getchar
#define pt putchar
#define int long long
//typedef long long ll;
//typedef __int128 lll;
typedef unsigned long long ull;
const int N=2e5+5;
using namespace std;
inline int read(){
    int x=0,f=1;char ch=gt();
    while(!isdigit(ch)){if(ch=='-')f=-1;ch=gt();}
    while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=gt();}return x*f;
}
inline void print(int x){
    if(x<0)pt('-'),x=-x;
    if(x>9)print(x/10);
    pt(x%10+48);
}
inline void println(int x){
	print(x);
	pt('\n');
}
int n,a[N],head,tail,last,cnt;
char answer[N];
signed main(){
	n=read(),head=1,tail=n;
	for(int i=1;i<=n;++i)
		a[i]=read();
	while(1){
		if((last>=a[head]&&last>=a[tail])||tail<head||cnt==n)break;
		if(a[head]<a[tail]){
			if(a[head]>last){
				answer[++cnt]='L';
				last=a[head];	
				head++;
			}else{
				answer[++cnt]='R';
				last=a[tail];
				tail--;
			}
		}else if(a[head]>a[tail]){
			if(a[tail]>last){
				answer[++cnt]='R';
				last=a[tail];
				tail--;
			}else{
				answer[++cnt]='L';
				last=a[head];
				head++;
			}
		}else{
			int cnt1=0,cnt2=0,sum1=last,sum2=last;
			for(int i=head+1;i<=tail;++i){
				if(a[i]>sum1)sum1=a[i],cnt1++;
				else break;
			}
			for(int i=tail-1;i>=head;--i){
				if(a[i]>sum2)sum2=a[i],cnt2++;
				else break;
			}
			if(cnt1>=cnt2){
				answer[++cnt]='L';
				last=a[head];
				head++;
			}else{
				answer[++cnt]='R';
				last=a[tail];
				tail--;
			}
		}
	}
	println(cnt);
	for(int i=1;i<=cnt;++i)
		pt(answer[i]);
	return 0;
}
2022/5/20 22:43
加载中...