結果

問題 No.429 CupShuffle
ユーザー どららどらら
提出日時 2016-10-02 22:43:22
言語 C++11
(gcc 11.4.0)
結果
AC  
実行時間 133 ms / 2,000 ms
コード長 1,459 bytes
コンパイル時間 978 ms
コンパイル使用メモリ 84,984 KB
実行使用メモリ 5,240 KB
最終ジャッジ日時 2023-08-13 17:10:37
合計ジャッジ時間 2,205 ms
ジャッジサーバーID
(参考情報)
judge15 / judge13
このコードへのチャレンジ(β)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 3 ms
4,380 KB
testcase_01 AC 1 ms
4,384 KB
testcase_02 AC 1 ms
4,384 KB
testcase_03 AC 2 ms
4,384 KB
testcase_04 AC 3 ms
4,380 KB
testcase_05 AC 2 ms
4,384 KB
testcase_06 AC 2 ms
4,380 KB
testcase_07 AC 3 ms
4,384 KB
testcase_08 AC 2 ms
4,384 KB
testcase_09 AC 2 ms
4,384 KB
testcase_10 AC 14 ms
4,380 KB
testcase_11 AC 128 ms
5,240 KB
testcase_12 AC 124 ms
5,208 KB
testcase_13 AC 128 ms
5,208 KB
testcase_14 AC 133 ms
5,204 KB
testcase_15 AC 1 ms
4,384 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <cmath>
#include <iostream>
#include <queue>
#include <list>
#include <stack>
#include <map>
#include <numeric>
#include <set>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
#define REP(i,a,n) for(int i=(a); i<(int)(n); i++)
#define rep(i,n) REP(i,0,n)
#define FOR(it,c) for(__typeof((c).begin()) it=(c).begin(); it!=(c).end(); ++it)
#define ALLOF(c) (c).begin(), (c).end()
typedef long long ll;

int main(){
  ios::sync_with_stdio(false);
  int N, K, X;
  cin >> N >> K >> X;
  vector< pair<int,int> > v;
  rep(i,K){
    string sa, sb;
    cin >> sa >> sb;
    if(sa == "?"){
      v.push_back(make_pair(-1,-1));
    }else{
      int a, b;
      {
        stringstream ss(sa);
        ss >> a;
      }
      {
        stringstream ss(sb);
        ss >> b;
      }
      a--;
      b--;
      v.push_back(make_pair(a,b));
    }
  }
  vector<int> first, last;
  rep(i,N){
    int c;
    cin >> c;
    first.push_back(i+1);
    last.push_back(c);
  }

  rep(i,v.size()){
    if(v[i].first == -1) break;
    swap(first[v[i].first], first[v[i].second]);
  }
  for(int i=v.size()-1; i>=0; i--){
    if(v[i].first == -1) break;
    swap(last[v[i].first], last[v[i].second]);
  }

  vector<int> ret;
  rep(i,N){
    if(first[i] != last[i]){
      ret.push_back(i+1);
      //break;
    }
  }
  
  cout << ret[0] << " " << ret[1] << endl;
  return 0;
}
0