C. 거의 동일 (Codeforces 라운드 # 580 (사업부. 2))

산출
표준 출력

당신은 정수 주어진  N , N을. 당신은에서 숫자 배열해야 할  에 1을  2 n은 다음과 같은 조건이 충족 될 수 있도록 원에, 정확히 한 번에 각을 사용하여, 2N :

모든 들어  N 원에 N 개의 연속 번호 칠판에 그 합을 작성합니다. 이어서 칠판에 두의  2 개 N 2N 숫자보다는 상이하게  1 1.

예를 들어, 선택  N = 3 , N = 3. 왼쪽에 유효한 배열의 예를 볼 수있다 :  1 + 4 + 5 = 10 1 + 4 + = 105,  4 + 5 + 2 = 11 4 + 5 + 2 = 11,  5 + 2 + 3 = 10 5 + 2 = 10 + 3,  2 + 3 + 6 = 11 2 + 3 + 6 = 11,  3 + 6 + 1 = 10 3 + 6 + 10 = 1,  6 + 1 + 4 =11 6 + 1 = 11 + 4, 임의의 두 숫자는 최대 차이가 1잘못된 배열을 볼 수있는 권리 1. 예를 들어,  5 + 1 + 6 = 12 5 + 1 + 6 = 12, 및  3 + 2 + 4 = 9 3 + 9 + 2 = 4,  912 12 이상에 의한 차이가  1 (1).

입력

제 1 및 전용 회선 하나 개 포함 정수  N (N 1 N를 10 5 1≤n≤105).

산출

해결책 출력 "이없는 경우 제 라인은 NO".

용액 출력 "이 있으면 제 라인 YES". 제 2 라인의 출력에서  2 개 N 2N 번호 - 행 번호  1 1 행  2 N 순서 2N 그들은 원에서 머무를 것이다. 각 숫자는 한 번만 나타납니다. 몇 가지 솔루션이있는 경우, 출력에게 그 중 하나를 할 수 있습니다.

입력
산출
YES 
1 2 3 4 5 6
입력
4
산출
아니
노트

명령문의 예는 먼저 예를 들어 도시되어있다.

이 두 번째 예에서 해결책이 없다는 것을 입증 할 수있다.

 

CIN, COUT,의 printf, scanf와 동기화 출력 순서, 버그의 두 시간 -_- 영향을 끄고 사용을 혼동해서는 안 |

 

 

 

 

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <string>
#include <cstring>
#include <cstdlib>
#include <map>
#include <vector>
#include <set>
#include <queue>
#include <stack>
#include <cmath>
//
#define lson rt<<1, l, m
#define rson rt<<1|1, m+1, r
//
#define fi      first
#define se      second
#define pb      push_back
#define pq      priority_queue<int>
#define ok      return 0;
#define oi(x)   cout<<x<<endl;
#define os(str) cout<<string(str)<<endl;
#define gcd __gcd
#define mem(s,t) memset(s,t,sizeof(s))
#define debug(a,n) for(int i=0;i<n;i++) cout<<a[i]<<" ";  cout<<endl;
#define debug1(a,n) for(int i=1;i<=n;i++) cout<<a[i]<<" ";  

cout<<endl;
#define Debug(a,n,m) for(int i=0;i<n;i++) {for(int j=0;j<m;j++) 

cout<<a[i][j]<<" ";   cout<<endl; }
#define input(a,k) for (int i = 1; i <= (int)(k); i++)  {cin>>a[i];}
#define INPUT(a,n,m) for(int i=0;i<n;i++) {for(int j=0;j<m;j++) 

cin>>a[i][j] ; }
#define TLE std::ios::sync_with_stdio(false);   cin.tie(NULL);   

cout.tie(NULL);   cout.precision(10);

using namespace std;
inline void NO() {    cout<<"NO"<<endl; }
inline void YES(){    cout<<"YES"<<endl;}
const  int  mxn = 2e5+10;
#define rep(k)    for (int i=0;i<n;i++)
#define rep1(j,k) for (int i=j;i<=k;  i++)
#define per(j,k)  for (int i=j;i>=k; i--)
#define per(k)    for (int i=k-1;i>=0;i--)
int a[mxn];
int main()
{
    int n;
    TLE;
    while(cin>>n)
    {
        if(n&1)
        {
            rep1(1,n)
            {
                if(i%2)
                {
                    a[i]=2*i-1;
                    A [i가 + N] = 2 * I; 
                } 
                다른 
                { 
                    A [I] = 2 * I; 
                    A [i가 + N] = 2 * I- 1 ; 
                } 
            } 
            ) (YES; 
            DEBUG1 (a, 2 *의 N); 
            COUT << ENDL; 

        } 
        다른 
            NO (없음); 
    }

 

추천

출처www.cnblogs.com/Shallow-dream/p/11619227.html