BZOJ2083:[POI] TES-Intelligence Test
給定一個數串,和m個小數串,問這些小串都是不是大數字串的子序列
思路
用
時間複雜度
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
const int MAXN = 1000000+10;
vector <int> v[MAXN];
int n,m,a,k;
void Read(int &x)
{
int in=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9') {if(f=='-')f=-1;ch=getchar();}
while(ch>='0' && ch<='9') {in=in*10+ch-'0';ch=getchar();}
x=in*f;
}
int main()
{
Read(n);
for(int i=1;i<=n;i++)
{
Read(a);
v[a].push_back(i);
}
Read(m);
for(int i=1;i<=m;i++)
{
Read(k);
bool flag=1;int last=0;
vector<int>::iterator node;
for(int j=1;j<=k;j++)
{
Read(a);
if(flag)
{
node = upper_bound(v[a].begin(),v[a].end(),last);
if(node == v[a].end() ) flag=0;
else last = *node;
}
}
if(flag) puts("TAK");
else puts("NIE");
}
return 0;
}