Clock Pictures CSU - 1581

#include<cstdio>
#include<iostream>
#include<cstring>
#include<memory>
#include<algorithm>
using namespace std;
#define mod 360000
int a[200005],b[200005];
int c[200005],d[200005*2];
int ne[200005];
int sum;
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	for(int i=1;i<=n;i++)
		cin>>b[i];
	sort(a+1,a+1+n);
	sort(b+1,b+1+n);
	for(int i=1;i<=n-1;i++)
		c[i]=a[i+1]-a[i];
	c[n]=a[1]-a[n]+mod;
	for(int i=0;i<=n-1;i++)
		d[i]=b[i+1]-b[i];
	b[n]=b[1]-b[n]+mod;
	for(int i=n+1;i<=2*n;i++)
		d[i]=d[i-n];
	//模板串 
	for(int i = 2, j = 0; i <= n; i ++ ) 
	{
        while (j && c[i] != c[j + 1])   
			j = ne[j];
        if (c[i] == c[j + 1])    
			j ++ ;
        ne[i] = j;
    }
    int f1=0;
    for (int i = 1, j = 0; i <= 2*n; i ++ ) {
        while (j && d[i] != c[j + 1])    //当j没有退回起点,并且当前的s[i]不能和下一个j的位置匹配
            j = ne[j];//移动,保证之前的相等  直到匹配位置,或者j已经到开头了
        if (d[i] == c[j + 1]) //如果已经匹配了
            j ++ ;  //j往下移动
        if (j == n) {//说明匹配成果
            printf("possible\n");
            break;
        }
    }
    if(f1==0)
    	printf("impossible\n");
} 
posted @   晴屿  阅读(177)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥
点击右上角即可分享
微信分享提示