제출 #984786

#제출 시각아이디문제언어결과실행 시간메모리
984786Tsagana이상한 기계 (APIO19_strange_device)C++14
100 / 100
383 ms71772 KiB
#include<bits/stdc++.h>

#define IOS ios_base::sync_with_stdio(false);cin.tie();cout.tie();
#define all(x) x.begin(), x.end()
#define int long long
#define pi pair<int, int >
#define pq priority_queue
#define lb lower_bound
#define ub upper_bound
#define pb push_back
#define eb emplace_back
#define mset multiset
#define F first
#define S second

using namespace std;

const int INF = 1e18;
int n, A, B, s;
int l[1000001];
int r[1000001];

int gcd(int a, int b) {return (a == 0 ? b : gcd(b % a, a));}
void solve ()
{
	cin >> n >> A >> B;
	for(int i = 0; i < n; i++){
		cin >> l[i] >> r[i];
		s += r[i] - l[i] + 1;
	}
	map<int, int> cnt;
	if  (INF / A < (B + 1) / gcd(B + 1, A)) {return void(cout << s);}
	int cyc = A / gcd(A, B + 1) * B;
	vector<pair<int, int>> range;
	for (int i = 0; i < n; i++) {
		if (r[i] - l[i] + 1 >= cyc) {return void(cout << cyc);}
		if ((l[i] %= cyc) <= (r[i] %= cyc)) {range.pb({l[i], r[i]});}
		else {range.pb({l[i], cyc - 1}); range.pb({0, r[i]});}
	} sort(all(range));
	int ans = range[0].S - range[0].F + 1, pre = range[0].S;
	for (int i = 1; i < range.size(); i++) {
		if (range[i].S > pre) {
			ans += range[i].S - max(range[i].F, pre + 1) + 1;
			pre = range[i].S;
		}
	}
	cout << ans;
}
signed main(){IOS solve(); return 0;}

컴파일 시 표준 에러 (stderr) 메시지

strange_device.cpp: In function 'void solve()':
strange_device.cpp:41:20: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   41 |  for (int i = 1; i < range.size(); i++) {
      |                  ~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...