Submission #1220125

#TimeUsernameProblemLanguageResultExecution timeMemory
122012512345678JOIRIS (JOI16_joiris)C++20
30 / 100
2 ms584 KiB
#include <bits/stdc++.h> using namespace std; const int nx=51; int n, k, a[nx], mx, h[nx], sm; vector<pair<int, int>> res; void add(int l, int r) { for (int i=1; i<=n; i++) if (i<l||r<i) res.push_back({1, i}), h[i]+=k-1; for (int i=l; i<r; i+=k) res.push_back({2, i}); for (int i=l;i <=r; i++) res.push_back({1, i}), h[i]+=k; int mx=0; for (int i=1; i<=n; i++) mx=max(mx, h[i]); //res.push_back({-5, mx}); for (int i=1; i<=n; i++) while (h[i]<mx) h[i]+=k, res.push_back({1, i}); for (int i=1; i<=n; i++) h[i]=(h[i]-mx)%k; } int main() { cin.tie(NULL)->sync_with_stdio(false); cin>>n>>k; for (int i=1; i<=n; i++) cin>>h[i], mx=max(mx, h[i]), sm+=h[i]; for (int i=1; i<=n; i++) while (h[i]<mx) res.push_back({1, i}), h[i]+=k; for (int i=1; i<=n; i++) h[i]=(h[i]-mx)%k; for (int i=2; i<=n-k+1; i++) while (h[i]!=h[i-1]) add(i, i+k-1); if ((n-(k-1))%k==0) { while (h[1]!=h[n]) add(1, n-k+1); } for (int i=1; i<=n; i++) if (h[i]!=h[1]) return cout<<-1, 0; cout<<res.size()<<'\n'; for (auto [x, y]:res) cout<<x<<' '<<y<<'\n'; } /* 6 1 0 0 0 2 2 0 8 2 0 1 0 1 0 1 0 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...