bzoj2882: 工艺

来源:互联网 发布:电脑点不开任何软件 编辑:程序博客网 时间:2024/04/28 17:25

最小表示法裸题。

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){    char ch=getchar();int f=0;    while(ch<'0'||ch>'9') ch=getchar();    while(ch>='0'&&ch<='9')    {f=(f<<1)+(f<<3)+ch-'0';    ch=getchar();}    return f;}int a[300005],n,m;int main(){    n=read();    for(int i=0;i<n;i++)    a[i]=read();    int i=0,j=1,k=0,x,y;    while(i<n&&j<n&&k<n)    {        if(a[(i+k)%n]==a[(j+k)%n]) k++;        else if(a[(i+k)%n]>a[(j+k)%n]) i+=k+1,k=0;        else j+=k+1,k=0;        if(i==j)        i++;    }    x=min(i,j);    for(int ii=0;ii<n-1;ii++)    printf("%d ",a[(ii+x)%n]);    printf("%d",a[(x+n-1)%n]);}
原创粉丝点击