Submission #155680

#TimeUsernameProblemLanguageResultExecution timeMemory
155680nvmdavaJOIRIS (JOI16_joiris)C++17
0 / 100
2 ms380 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ff first #define ss second #define N 150000 #define MOD 1000000007 #define INF 0x3f3f3f3f mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int a[55]; int n, k; vector<pair<int, int> > ans; int now[55]; int md[55]; int cnt[55]; void reset(){ bool ok = 0; for(int i = 1; i <= n; i++){ if(now[i] >= k) ok = 1; } if(ok == 0) return; int mn = 0x3f3f3f3f; for(int i = 1; i <= n; i++){ if(now[i] < k){ ans.push_back({1, i}); now[i] += k; } mn = min(mn, now[i]); } for(int i = 1; i <= n; i++) now[i] -= mn; reset(); } void check(int c){ for(int i = 1; i <= n; i++){ now[i] = a[i]; md[i] = now[i] % k; } memset(cnt, 0, sizeof cnt); ans.clear(); cnt[n - k + 1] = c; for(int i = n - k + 1; i <= n; i++) md[i] = (md[i] + c) % k; for(int i = n - k; i > 0; i--){ while(md[i + k - 1] != md[n]){ for(int j = 0; j < k; j++) md[i + j] = (md[i + j] + 1) % k; cnt[i]++; } } for(int i = 1; i < n; i++){ if(md[i] != md[n]) return; } bool ok = 1; reset(); do { ok = 0; for(int i = 1; i <= n; i++){ if(cnt[i]) ok = 1; } std::vector<pair<int, int> > pos; if(ok == 0) break; for(int i = 1; i <= n; i++){ if(cnt[i]){ cnt[i]--; pos.push_back({2, i}); i += k - 1; } else { now[i] += k - 1; pos.push_back({1, i}); } } sort(pos.begin(), pos.end()); for(auto& x : pos) ans.push_back(x); reset(); } while(ok); cout<<ans.size()<<'\n'; for(auto& x: ans){ cout<<x.ff<<' '<<x.ss<<'\n'; } exit(0); } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>k; int s = 0; for(int i = 1; i <= n; i++){ cin>>a[i]; s += a[i]; } for(int i = 0; i < k; i++){ check(i); } cout<<-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...