2012年7月3日火曜日

AOJ Volume0 0011: Drawing Lots

/*************************************************
*   2012/05/09                                  
*   AOJ Volume0 0011  Drawing Lots              
*   Input:縦線の本数w(整数:w≦30)               
*         横棒の本数n(整数:n≦30)               
*         横棒リストa1,b1(整数:半角カンマ区切り)
*   Output:                                     
*         左から右に、                          
*           1番目の棒に来る数字                 
*                                               
*           w番目の棒に来る数字                 
**************************************************/
#include<algorithm>
#include<iostream>
#include<cstdio>

const int MAX_N = 30;

int w; //縦線の本数(w≦30)
int n; //横棒の本数(n≦30)

std::pair<int,int> in[MAX_N]; //横棒リストan,bn
int line[MAX_N+1];

void swap(int x, int y);      //入れ替え
void solve();                 //あみだくじの実行


int main(){
    std::cin >> w; //(input)縦棒の本数  
    std::cin >> n; //(input)横棒の本数

    for(int i=1; i<=w; i++)//あみだくじ縦棒作成
        line[i] = i;

    for(int i=0; i<n; i++){    //(input)横棒リスト
        scanf("%d,%d", &in[i].first,&in[i].second);
    }


    solve();    //あみだくじ実行

    for(int i=1; i<=w; i++){
        std::cout << line[i] << std::endl;
    }
    return 0;
}


void solve(){    //あみだくじ実行
    for(int i=0; i<n; i++){
        swap(in[i].first, in[i].second);
    }
}

void swap(int x, int y){//入れ替え作業
    int tmp = line[x];
    line[x] = line[y];
    line[y] = tmp;
}

0 件のコメント:

コメントを投稿