Submission #777869

#TimeUsernameProblemLanguageResultExecution timeMemory
777869TeaTimeJOIRIS (JOI16_joiris)C++17
30 / 100
1 ms340 KiB
#include <iostream> #include <vector> #include <cmath> #include <algorithm> #include <cassert> using namespace std; #define fastInp cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); typedef long long ll; typedef long double ld; const ll INF = 1'000'000'000, MX = 10'000; ll n, k; vector<ll> vec; vector<pair<ll, ll>> ans; void delmin() { ll mn = vec[0]; for (auto c : vec) mn = min(mn, c); for (auto &c : vec) c -= mn; } void norm() { delmin(); bool f = 0; ll todel = 0; for (auto c : vec) { if (c >= k) { f = 1; } } if (!f) return; for (int i = 0; i < vec.size(); i++) { if (vec[i] == 0) { vec[i] += k; ans.push_back({1, i + 1}); } } delmin(); norm(); } int main() { fastInp; cin >> n >> k; vec.resize(n); for (int i = 0; i < n; i++) cin >> vec[i]; norm(); for (int i = 1; i < n; i++) { if (vec[i - 1] == vec[i]) continue; if (i % k == 0) { norm(); while (vec[i - 1] % k != vec[i] % k) { ll i2 = i - k; while (i2 >= 0) { ans.push_back({2, i2 + 1}); for (int j = i2; j < i2 + k; j++) vec[j]++; i2 -= k; } delmin(); } continue; } if (i + k - 1 >= n) { cout << "-1\n"; return 0; } while (vec[i - 1] % k != vec[i] % k) { ans.push_back({2, i + 1}); ll mx = 0; for (int j = i; j < i + k; j++) mx = max(mx, vec[j]); for (int j = 0; j < n; j++) { if (!(i <= j && j <= i + k - 1)) { if (vec[j] < mx + 1) { vec[j] += k; ans.push_back({1, j + 1}); } vec[j]--; } } delmin(); } } norm(); assert(ans.size() <= MX); cout << ans.size() << "\n"; for (auto c : ans) cout << c.first << " " << c.second << "\n"; return 0; }

Compilation message (stderr)

joiris.cpp: In function 'void norm()':
joiris.cpp:42:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |     for (int i = 0; i < vec.size(); i++) {
      |                     ~~^~~~~~~~~~~~
joiris.cpp:33:8: warning: unused variable 'todel' [-Wunused-variable]
   33 |     ll todel = 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...