# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
382452 | 2021-03-27T10:56:16 Z | talant117408 | 이상한 기계 (APIO19_strange_device) | C++17 | 555 ms | 56384 KB |
/* Code written by Talant I.D. */ #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> using namespace __gnu_pbds; using namespace std; typedef long long ll; typedef pair <int, int> pii; typedef pair <ll, ll> pll; typedef tree <pii, null_type, less <pii>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; #define precision(n) fixed << setprecision(n) #define pb push_back #define ub upper_bound #define lb lower_bound #define mp make_pair #define eps (double)1e-9 #define PI 2*acos(0.0) #define endl "\n" #define sz(v) int((v).size()) #define all(v) v.begin(),v.end() #define rall(v) v.rbegin(),v.rend() #define do_not_disturb ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define OK cout << "OK" << endl; const int mod = 1e9+7; ll mode(ll a) { a %= mod; if (a < 0) a += mod; return a; } ll subt(ll a, ll b) { return mode(mode(a)-mode(b)); } ll add(ll a, ll b) { return mode(mode(a)+mode(b)); } ll mult(ll a, ll b) { return mode(mode(a)*mode(b)); } ll binpow(ll a, ll b) { ll res = 1; while (b) { if (b&1) res = mult(res, a); a = mult(a, a); b >>= 1; } return res; } void usaco(string s) { freopen((s+".in").c_str(), "r", stdin); freopen((s+".out").c_str(), "w", stdout); } ll n, a, b; ll A(ll x) { return (x+x/b)%a; } ll B(ll x) { return x%b; } int main() { do_not_disturb //~ usaco("dirtraverse"); ll sum = 0; cin >> n >> a >> b; vector <pll> v(n), segs; for (auto &to : v) cin >> to.first >> to.second; for (auto to : v) sum += (to.second-to.first+1); if (sum <= 1e6+7) { set <pll> st; for (auto to : v) { for (ll j = to.first; j <= to.second; j++) { st.insert(mp((j+j/b)%a, j%b)); } } cout << sz(st) << endl; } else if (b == 1) { for (auto to : v) { if (A(to.first) <= A(to.second)) { segs.pb(mp(A(to.first), A(to.second))); } else { segs.pb(mp(A(to.first), a-1)); segs.pb(mp(0ll, A(to.second))); } } sort(all(segs)); vector <pll> fin; for (auto to : segs) { if (sz(fin) == 0 || fin.back().second < to.first) fin.pb(to); else fin.back().second = max(fin.back().second, to.second); } ll ans = 0; for (auto to : fin) ans += to.second-to.first+1; cout << ans << endl; } return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 364 KB | Output is correct |
2 | Correct | 49 ms | 12524 KB | Output is correct |
3 | Correct | 72 ms | 18084 KB | Output is correct |
4 | Correct | 3 ms | 876 KB | Output is correct |
5 | Correct | 1 ms | 364 KB | Output is correct |
6 | Correct | 1 ms | 364 KB | Output is correct |
7 | Correct | 2 ms | 492 KB | Output is correct |
8 | Correct | 2 ms | 492 KB | Output is correct |
9 | Correct | 8 ms | 1260 KB | Output is correct |
10 | Correct | 1 ms | 364 KB | Output is correct |
11 | Correct | 1 ms | 364 KB | Output is correct |
12 | Correct | 1 ms | 364 KB | Output is correct |
13 | Correct | 1 ms | 384 KB | Output is correct |
14 | Correct | 1 ms | 364 KB | Output is correct |
15 | Correct | 45 ms | 7020 KB | Output is correct |
16 | Correct | 31 ms | 6892 KB | Output is correct |
17 | Correct | 65 ms | 9000 KB | Output is correct |
18 | Correct | 1 ms | 364 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 364 KB | Output is correct |
2 | Incorrect | 1 ms | 364 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 364 KB | Output is correct |
2 | Correct | 143 ms | 32364 KB | Output is correct |
3 | Correct | 192 ms | 32128 KB | Output is correct |
4 | Correct | 129 ms | 30572 KB | Output is correct |
5 | Incorrect | 285 ms | 16108 KB | Output isn't correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 364 KB | Output is correct |
2 | Incorrect | 555 ms | 56384 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 364 KB | Output is correct |
2 | Incorrect | 555 ms | 56384 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 364 KB | Output is correct |
2 | Incorrect | 555 ms | 56384 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 364 KB | Output is correct |
2 | Incorrect | 38 ms | 2284 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 364 KB | Output is correct |
2 | Correct | 49 ms | 12524 KB | Output is correct |
3 | Correct | 72 ms | 18084 KB | Output is correct |
4 | Correct | 3 ms | 876 KB | Output is correct |
5 | Correct | 1 ms | 364 KB | Output is correct |
6 | Correct | 1 ms | 364 KB | Output is correct |
7 | Correct | 2 ms | 492 KB | Output is correct |
8 | Correct | 2 ms | 492 KB | Output is correct |
9 | Correct | 8 ms | 1260 KB | Output is correct |
10 | Correct | 1 ms | 364 KB | Output is correct |
11 | Correct | 1 ms | 364 KB | Output is correct |
12 | Correct | 1 ms | 364 KB | Output is correct |
13 | Correct | 1 ms | 384 KB | Output is correct |
14 | Correct | 1 ms | 364 KB | Output is correct |
15 | Correct | 45 ms | 7020 KB | Output is correct |
16 | Correct | 31 ms | 6892 KB | Output is correct |
17 | Correct | 65 ms | 9000 KB | Output is correct |
18 | Correct | 1 ms | 364 KB | Output is correct |
19 | Correct | 1 ms | 364 KB | Output is correct |
20 | Incorrect | 1 ms | 364 KB | Output isn't correct |
21 | Halted | 0 ms | 0 KB | - |