답안 #513596

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
513596 2022-01-17T09:52:24 Z amukkalir 이상한 기계 (APIO19_strange_device) C++17
20 / 100
1079 ms 41320 KB
#include <bits/stdc++.h>
using namespace std; 
typedef long long ll; 
typedef unsigned long long ull; 

#define pii pair<int,int> 
#define pll pair<ll, ll> 
#define fi first 
#define se second 
#define pb push_back 
#define mp make_pair

ll gcd(ll a, ll b) {
    return b == 0 ? a : gcd(b, a%b); 
}
  
int n, a, b; 

signed main () {
    scanf("%d %d %d", &n, &a, &b); 

    vector<pll> v; 
    for(int i=0; i<n; i++) {
        ll l, r; scanf("%lld %lld", &l, &r); 
        v.pb(mp(l,r)); 
    }
    
    
    ull ans = 0; 
    //if r max < a*b / gcd(a, b+1)

    if(v.back().se / b < a / gcd(a, b+1)) { 
        for(int i=0; i<n; i++) {
            ans += v[i].se - v[i].fi + 1; 
        }
    } else {
        ll c = a/gcd(a, b+1) * b; 

        for(int i=0; i<n; i++) {
            if(v[i].se % c < v[i].fi % c || v[i].se >= v[i].fi + c) {
                v.pb(mp(0, v[i].se % c)); 
                v[i].se = c-1; 
            }

            v[i].fi %= c; 
            v[i].se %= c; 
        }

        cerr << c << endl; 

        sort(v.begin(), v.end(), [&] (pll a, pll b) {
            if(a.fi % c == b.fi % c) return a.se % c < b.se % c; 
            return a.fi % c < b.fi % c; 
        }); 

        //(auto p : v) cout << p.fi << " " << p.se << endl; 
        for(int i=0; i<v.size(); i++) {
            int l = i, r = i; 
            ll vl = v[i].fi, vr = v[i].se; 

            while(r + 1 < v.size() && v[r+1].fi <= vr) {
                vr = max(vr, v[r+1].se); 
                //cout << " :: " << vl << " " << vr << endl; 
                r++; 
            } 
                
            ans += vr - vl + 1; 
            
            i = r; 
        }
    }

    printf("%llu", ans); 
}

Compilation message

strange_device.cpp: In function 'int main()':
strange_device.cpp:57:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   57 |         for(int i=0; i<v.size(); i++) {
      |                      ~^~~~~~~~~
strange_device.cpp:61:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |             while(r + 1 < v.size() && v[r+1].fi <= vr) {
      |                   ~~~~~~^~~~~~~~~~
strange_device.cpp:58:17: warning: unused variable 'l' [-Wunused-variable]
   58 |             int l = i, r = i;
      |                 ^
strange_device.cpp:20:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |     scanf("%d %d %d", &n, &a, &b);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
strange_device.cpp:24:23: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   24 |         ll l, r; scanf("%lld %lld", &l, &r);
      |                  ~~~~~^~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 8 ms 812 KB Output is correct
3 Correct 8 ms 1068 KB Output is correct
4 Correct 0 ms 204 KB Output is correct
5 Correct 0 ms 204 KB Output is correct
6 Correct 0 ms 204 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 1 ms 204 KB Output is correct
9 Correct 1 ms 292 KB Output is correct
10 Correct 0 ms 204 KB Output is correct
11 Correct 1 ms 204 KB Output is correct
12 Correct 0 ms 204 KB Output is correct
13 Correct 0 ms 292 KB Output is correct
14 Correct 0 ms 204 KB Output is correct
15 Correct 0 ms 204 KB Output is correct
16 Correct 8 ms 940 KB Output is correct
17 Correct 90 ms 5672 KB Output is correct
18 Correct 0 ms 204 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 292 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 0 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 360 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 575 ms 41320 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 703 ms 16800 KB Output is correct
3 Incorrect 1079 ms 33196 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 703 ms 16800 KB Output is correct
3 Incorrect 1079 ms 33196 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 703 ms 16800 KB Output is correct
3 Incorrect 1079 ms 33196 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 80 ms 2560 KB Output is correct
3 Incorrect 68 ms 2580 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 8 ms 812 KB Output is correct
3 Correct 8 ms 1068 KB Output is correct
4 Correct 0 ms 204 KB Output is correct
5 Correct 0 ms 204 KB Output is correct
6 Correct 0 ms 204 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 1 ms 204 KB Output is correct
9 Correct 1 ms 292 KB Output is correct
10 Correct 0 ms 204 KB Output is correct
11 Correct 1 ms 204 KB Output is correct
12 Correct 0 ms 204 KB Output is correct
13 Correct 0 ms 292 KB Output is correct
14 Correct 0 ms 204 KB Output is correct
15 Correct 0 ms 204 KB Output is correct
16 Correct 8 ms 940 KB Output is correct
17 Correct 90 ms 5672 KB Output is correct
18 Correct 0 ms 204 KB Output is correct
19 Correct 0 ms 292 KB Output is correct
20 Correct 0 ms 204 KB Output is correct
21 Correct 0 ms 204 KB Output is correct
22 Correct 0 ms 204 KB Output is correct
23 Correct 1 ms 204 KB Output is correct
24 Correct 1 ms 204 KB Output is correct
25 Correct 1 ms 360 KB Output is correct
26 Correct 1 ms 332 KB Output is correct
27 Correct 1 ms 332 KB Output is correct
28 Correct 575 ms 41320 KB Output is correct
29 Correct 0 ms 204 KB Output is correct
30 Correct 703 ms 16800 KB Output is correct
31 Incorrect 1079 ms 33196 KB Output isn't correct
32 Halted 0 ms 0 KB -