题目大意:开始点未定,有多个操作,将点向左或者向右移动d个单位长度,是否存在在一个开始点符合要求。
代码:
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
bitset <20005> a,b;
int main()
{
int n;
cin>>n;
int flag1=1;
while(n--){
int t,m;
cin>>t>>m;
//int a,b;
int flag=0;
a.reset();
b.reset();
for(int i=0;i<=t;i++){
a.set(i),b.set(i);
}
for(int i=0;i<m;i++)
{
int l,r;
scanf("%d%d",&l,&r);
a=((a>>(r-l))|(a<<(r-l)))&b;
}
for(int i=0;i<=t;i++)
{
//cout<<a[i]<<endl;
if(a[i]==1)
flag=1;
}
if(flag==0)
flag1=0;
//cout << "Hello world!" << endl;
}
if(flag1==1)
cout<<"possible"<<endl;
else
cout<<"impossible"<<endl;
return 0;
}