제출 #249017

#제출 시각아이디문제언어결과실행 시간메모리
249017SamAndStrange Device (APIO19_strange_device)C++17
100 / 100
2477 ms69436 KiB
#include <bits/stdc++.h>
using namespace std;
#define m_p make_pair
long long gcd(long long x, long long y)
{
	if (x == 0)
		return y;
	return gcd(y % x, x);
}
long long lca(long long x, long long y)
{
	return x / gcd(x, y) * y;
}

long long n, x, y;

long long t;

vector<pair<long long, int> > v;
void ubd(long long l, long long r)
{
    v.push_back(m_p(l, 1));
    v.push_back(m_p(r + 1, -1));
}

int main()
{
    #ifdef SOMETHING
    freopen("input.txt", "r", stdin);
    #endif // SOMETHING
	cin >> n >> x >> y;
	t = x / gcd(y + 1, x) * y;

	while (n--)
	{
		long long l, r;
		cin >> l >> r;
		if (l / t == r / t)
			ubd(l % t, r % t);
		else if (l / t == r / t - 1)
		{
			ubd(0, r % t);
			ubd(l % t, t - 1);
		}
		else
		{
			ubd(0, t - 1);
		}
	}

	sort(v.begin(), v.end());
    long long ans = 0;
    int p = 0;
    for (int i = 0; i < v.size(); ++i)
    {
        p += v[i].second;
        if (p > 0)
            ans += (v[i + 1].first - v[i].first);
    }
    cout << ans << endl;
	return 0;
}

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

strange_device.cpp: In function 'int main()':
strange_device.cpp:54:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < v.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...