Submission #38144

#TimeUsernameProblemLanguageResultExecution timeMemory
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; }

Compilation message (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...