제출 #38144

#제출 시각아이디문제언어결과실행 시간메모리
38144funcsrJOIRIS (JOI16_joiris)C++14
0 / 100
0 ms2016 KiB
#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <set>
#include <cassert>
#include <algorithm>
#define rep(i,n) for (int i=0; i<(n); i++)
#define all(x) x.begin(), x.end()
#define pb push_back
#define _1 first
#define _2 second
using namespace std;
typedef pair<int, int> P;

int N, K;
int A[50];
vector<P> ans;
void update() {
  int lo = *min_element(A, A+N);
  rep(i, N) A[i] -= lo;
}
void tate(int x) {
  A[x] += 2;
  update();
  ans.pb(P(1, x));
}
void yoko(int x) {
  A[x] += 1;
  A[x+1] += 1;
  update();
  ans.pb(P(2, x));
}
void solve() {
  int lo = *min_element(A, A+N), hi = *max_element(A, A+N);
  if (hi-lo > 1) {
    rep(i, N) if (A[i] == lo) tate(i);
    return;
  }
  vector<int> zero;
  rep(i, N) if (A[i] == 0) zero.pb(i);
  rep(i, (int)zero.size()-1) {
    int a = zero[i], b = zero[i+1];
    if ((b-a)%2 == 1) {
      for (int x=a; x<b; x+=2) yoko(x);
      return;
    }
  }
  int a = zero[0], b = zero[1];
  tate(a);
  for (int i=a+1; i<N-1; i+=2) yoko(i);
}
int main() {
  cin >> N >> K;
  if (K != 2) abort();
  int sum = 0;
  rep(i, N) cin >> A[i], sum += A[i];
  if (N % 2) abort();
  if (sum % 2) {
    cout << -1 << "\n";
    return 0;
  }
  while (*max_element(A, A+N) > 0) {
    solve();
  }
  cout << ans.size() << "\n";
  for (P p : ans) {
    cout << p._1 << " " << p._2 << "\n";
  }
  return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

joiris.cpp: In function 'void solve()':
joiris.cpp:49:20: warning: unused variable 'b' [-Wunused-variable]
   int a = zero[0], b = zero[1];
                    ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...