Cod sursa(job #1168812)

Utilizator alex_bucevschiBucevschi Alexandru alex_bucevschi Data 9 aprilie 2014 17:34:05
Problema Xor Max Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <cstdio>

using namespace std;
int n,a,maxi,start,stop,dp[10005][10005],i,j;
int main()
{
    freopen("xormax.in","r",stdin);
    freopen("xormax.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&a);
        dp[i][i]=a;
        if(maxi<a)
        {
            maxi=a;
            start=stop=i;
        }
    }
    for(i=1;i<n;i++)
        for(j=i+1;j<=n;j++)
        {
            dp[i][j]=dp[i][j-1]^dp[j][j];
             if(dp[i][j]==maxi)
            {
                if(stop!=j)
                    stop=j<stop?j:stop;
                else
                if(stop==j)
                    if(stop-start>stop-i)
                        start=i;
            }
            if(dp[i][j]>maxi)
            {
                maxi=dp[i][j];
                start=i;
                stop=j;
            }
        }
    printf("%d %d %d\n",maxi,start,stop);
    return 0;
}