Submission #155771

#TimeUsernameProblemLanguageResultExecution timeMemory
155771stefdascaJOIRIS (JOI16_joiris)C++14
45 / 100
4 ms508 KiB
#include<bits/stdc++.h> using namespace std; int n, k, nr; int val[52]; pair<int, int>ans[10002]; void proc(int poz) { int maxi = 0; for(int i = poz; i <= poz + k - 1; ++i) maxi = max(maxi, val[i]); ++maxi; ans[++nr] = {2, poz}; for(int i = 1; i < poz; ++i) { while(val[i] < maxi) { val[i] += k; ans[++nr] = {1, i}; } val[i]--; } for(int i = poz + k; i <= n; ++i) { while(val[i] < maxi) { val[i] += k; ans[++nr] = {1, i}; } val[i]--; } } int main() { cin >> n >> k; for(int i = 1; i <= n; ++i) cin >> val[i]; for(int i = 2; i + k - 1 <= n; ++i) while(val[i] % k != val[i-1] % k) proc(i); for(int i = n - k + 2; i >= k + 1; --i) while(val[i] % k != val[i-1] % k) proc(i - k); int mx = val[1]; for(int i = 2; i <= n; ++i) { mx = max(mx, val[i]); if(val[i] % k != val[i-1] % k) { cout << -1; return 0; } } for(int i = 1; i <= n; ++i) { while(val[i] < mx) { val[i] += k; ans[++nr] = {1, i}; } } cout << nr << '\n'; for(int i = 1; i <= nr; ++i) cout << ans[i].first << " " << ans[i].second << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...