Submission #1151464

#TimeUsernameProblemLanguageResultExecution timeMemory
1151464MuhammadSaramCircle Passing (EGOI24_circlepassing)C++20
100 / 100
166 ms4328 KiB
#include <bits/stdc++.h>

using namespace std;

#define all(v) v.begin(), v.end()
#define dis(x,y) min(abs(x-y),2*n-abs(x-y))

int main()
{
	int n,m,q,x;
	cin>>n>>m>>q;
	vector<int> v(2*m);
	for (int i=0;i<m;i++)
		cin>>v[i];
	for (int i=m;i<2*m;i++)
		v[i]=v[i-m]+n;
	while (q--)
	{
		int x,y;
		cin>>x>>y;
		int ans=dis(x,y);
		int nx=lower_bound(all(v),x)-begin(v),pr=nx;
		if (nx==v.size())
			nx=0;
		nx=v[nx];
		if (!pr)
			pr=v.size();
		pr=v[pr-1];
		ans=min(ans,dis(x,nx)+dis((nx+n)%(2*n),y)+1);
		ans=min(ans,dis(x,pr)+dis((pr+n)%(2*n),y)+1);
		cout<<ans<<endl;
	}
	
	return 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...