uva - 10730 - Antiarithmetic?(폭력 매거)

1163 단어
본 문제는 모든 불법 삼원조를 직접 폭력으로 매거하여 판단하면 된다.
그러나 10000일 때 불법 삼원조의 개수는 24599000이다.현재 이렇게 많은 조건을 동시에 만족시킬 것으로 추정되는 n장열이 매우 적어서 프로그램의 초가 지났다.혹은 물 많다고 말하기;
#include<cstdio>
#include<vector>
#include<queue>
#include<cmath>
#include<cstring>
#include <cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;

const int maxn = 10100;
int a[maxn],n;
int main()
{
    while(scanf("%d",&n)==1&&n){
         scanf(":");
         for(int i=1;i<=n;i++){
            int x;
            scanf("%d",&x);
            x++;
            a[x] = i;
         }
         bool flag=true;
         for(int i=1;i<=n;i++){
             for(int j=1;i+2*j<=n;j++){
                if( (a[i] < a[j+i] && a[j+i] < a[j+j+i])
                   ||(a[i] > a[j+i] && a[j+i] > a[j+j+i]) )
                {flag=false;
                break;}
             }
             if(!flag) break;
         }
         if(flag) printf("yes
"); else printf("no
"); } return 0; }

좋은 웹페이지 즐겨찾기