全部超时,求调
查看原帖
全部超时,求调
1417753
XLsss楼主2024/8/18 15:36

以下为超时代码

#include<bits/stdc++.h>using namespace std;
int n;int a[1000000];int q=0;
void fix(int L,int R){
    for(int i=L+1;i<R;i++) a[i]-=1;
    q+=1;
}
int check(int L,int R){
    for(int i=L+1;i<R;i++){
        if(a[i]!=1) return 1;
    }
    return 0;
}
int x=0;void find(int b[100000]){
    for(int i=1;i<=n;i++){
        if(a[i]==1) b[x]==i,x++;
    }
}
void turn(int b[100000]){
    for(int i=0;i<x-1;i++){
        for(int j=0;j<x;i++){
            if(b[i]>b[j]) swap(b[i],b[j]);
        }
    }
}
int main(){
    cin>>n;
    a[0]=1,a[n+1]=1;
    int b[100000]={0};
    for(int i=1;i<=n;i++) cin>>a[i];
    while(check(0,n+1)==1){
        find(b);
        turn(b);
        for(int i=0;i<x-1;i++){
            if(check(b[i],b[i+1])==1) fix(b[i],b[i+1]);
        }
        if(x==0) fix(0,n+1);
        else fix(0,b[0]),fix(b[x-1],n+1);
    }
    cout<<q+1;
}
2024/8/18 15:36
加载中...