http://codeforces.com/contest/496

A:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <math.h>
#include <stdlib.h>

using namespace std;

int n;
int p[110];

int main()
{
    while (scanf("%d",&n)!=EOF)
    {
        for(int i=1;i<=n;i++)
            scanf("%d",&p[i]);

        int ans = 0;
        int q[110];

        for(int i=2;i<=n-1;i++)
        {
            ans = 0;
            int t = p[i];
            p[i] = -1;
            for( int j =1;j<=n-1;j++)
            {
                if (p[j] != -1)
                    ans = max(ans,p[j+1] - p[j]);
                else
                    ans = max(ans,p[j+1] - p[j-1]);
            }

            q[i] = ans;

            p[i] = t;
        }

        ans = 100000;
        for(int i=2;i<=n-1;i++)
            ans = min(ans ,q[i]);

        printf("%d\n",ans);
    }
    return 0;
}

B:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <string.h>
#include <math.h>
#include <stdlib.h>

using namespace std;

typedef long long LL;

const int MAXN = 1005;

int n;
string s;
string ans;

int main() {
    cin >> n;
    cin >> s;
    ans = s;
    for(int i = 0; i < n; ++i)
    {
        string cur = "0";
        for(int j = 1; j < n; ++j)
            cur += (char)('0' + ((int)s[(i + j) % n] - s[i] + 10) % 10);

        //cout<<cur<<endl;
        if (cur < ans) ans = cur;
    }
    cout << ans << endl;
    return 0;
}