Submission #380538

#TimeUsernameProblemLanguageResultExecution timeMemory
380538pure_memJOIRIS (JOI16_joiris)C++14
100 / 100
1 ms512 KiB
#include <bits/stdc++.h> #define X first #define Y second #define MP make_pair #define ll long long using namespace std; const int N = 522; const ll INF = 1e18; int a[N], b[N], d[N], n, k; vector< pair<int, int> > ans; int main () { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); cin >> n >> k; for(int i = 0;i < n;i++) cin >> a[i], b[i % k] = (b[i % k] + a[i]) % k; for(int i = 0;i < n % k;i++){ if(b[i] != b[0]) return cout << -1, 0; } for(int i = n % k;i < k;i++){ if(b[i] != b[k - 1]) return cout << -1, 0; } for(int i = 1;i < n;i++){ while(a[i] < a[i - 1]){ a[i] += k; ans.push_back(MP(1, i)); } } for(int i = 0;i + 1 < n;i++){ for(;a[i] < a[i + 1];a[i]++){ for(int j = i - k + 1;j >= 0;j -= k){ ans.push_back(MP(2, j)); } d[i % k]--; } } d[k - 1] = 0; for(int i = k - 2;i >= 0;i--) d[i] += d[i + 1]; for(int i = 0;i < n;i++){ while(d[i] < 0) d[i] += k, ans.push_back(MP(1, i)); } if(n % k){ for(int i = n - k;i >= 0;i -= k){ for(int j = 0;j < d[0];j++){ ans.push_back(MP(2, i)); } } } cout << ans.size() << "\n"; for(pair<int, int> v: ans) cout << v.X << " " << v.Y + 1 << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...