usaco Hidden Password

赤裸裸的最小表示。

/*
ID: modengd1
PROG: hidden
LANG: C++
*/
#include <iostream>
#include <stdio.h>
#include <memory.h>
#include <cstring>
#include <string.h>
using namespace std;

char input[200000];
int L;
int Min()
{
    int i=0,j=1,k=0;
    while(i<L&&j<L&&k<L)
    {
        if(input[i+k]==input[j+k])
            k++;
        else
        {
            if(input[i+k]>input[j+k])
                if(i+k+1>j) i=i+k+1;
                else i=j+1;
            else
                if(j+k+1>i) j=j+k+1;
                else j=i+1;
            k=0;
        }
    }
    return min(i,j);
}
int main()
{
    freopen("hidden.in","r",stdin);
    freopen("hidden.out","w",stdout);
    scanf("%d",&L);
    getchar();

    for(int i=0;i<L;i++)
    {
        scanf("%c",&input[i]);
        if(i%72==71)
            getchar();
    }
    memcpy(input+L,input,sizeof(char)*L);
    cout<<Min()<<endl;
    return 0;
}

  

posted on 2015-10-23 09:43  insaneman  阅读(118)  评论(0编辑  收藏  举报

导航