제출 #708287

#제출 시각아이디문제언어결과실행 시간메모리
708287600Mihnea이상한 기계 (APIO19_strange_device)C++17
10 / 100
5053 ms524288 KiB
#include <cmath>
#include <functional>
#include <fstream>
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <set>
#include <map>
#include <list>
#include <time.h>
#include <math.h>
#include <random>
#include <deque>
#include <queue>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <cassert>
#include <bitset>
#include <sstream>
#include <chrono>
#include <cstring>
#include <numeric>
#include <cstdint>
#include <limits>
#include <numeric>
#include <iostream>


using namespace std;

#define int long long

pair<int, int> get(int t, int a, int b)
{
	int x = (t + t / b) % a;
	int y = t % b;
	return { x, y };
}

bool same_dumb(int t1, int t2, int a, int b)
{
	return get(t1, a, b) == get(t2, a, b);
}

int gcd(int a, int b)
{
	if (b == 0) return a;
	return gcd(b, a % b);
}

bool same_smart(int t1, int t2, int a, int b)
{
	a /= gcd(a, b + 1);
	a *= b;
	return t1 % a == t2 % a;
}

const int lim = 20;

void print(vector<int> v)
{
	cout << " ---> ";
	for (auto& x : v)
	{
		cout << x << " ";
	}
	cout << "\n";
}

void solve()
{ 
	int n, mod;
	cin >> n;
	{
		int a, b;
		cin >> a >> b;
		a /= gcd(a, b + 1);
		a *= b;
		mod = a;
	}
	set<int> s;
	vector<pair<int, int>> segs(n);
	for (auto& it : segs)
	{
		cin >> it.first >> it.second;
		for (int j = it.first; j <= it.second; j++) s.insert(j % mod);
	}
	cout << (int)s.size() << "\n";
	exit(0);
}

signed main()
{
#ifdef ONPC	
	FILE* stream;
	freopen_s(&stream, "input.txt", "r", stdin);
#else
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#endif

	solve();

	int cnt = 0;

	for (int a = 2; a <= lim; a++)
	{
		for (int b = 1; b <= lim; b++)
		{
			for (int t = 0; t <= 2 * a * b; t++)
			{
				for (int t2 = 0; t2 <= 2 * a * b; t2++)
				{
					bool s1 = same_dumb(t, t2, a, b);
					bool s2 = same_smart(t, t2, a, b);
					if (s1 != s2)
					{
						cout << "WA!\n";
						return 0;
					}
				}
			}
		
			cout << "done " << a << " " << b << "\n";
		}
	}

	cout << "Ac!\n";

	return 0;
}

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

strange_device.cpp: In function 'int main()':
strange_device.cpp:105:6: warning: unused variable 'cnt' [-Wunused-variable]
  105 |  int cnt = 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...