2013年12月31日 星期二

[POI] 17th stage I - pE Intelligence Test


#include<stdio.h>
#include<vector>
using namespace std;
vector<int> arr[1000005];
int s[1000005]={0};
int in[1000005];
int main(){
    int n,m,t,i,j,k,ed,flag,l,r,mi;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d",&k);
        arr[k].push_back(i);
    }
    scanf("%d",&t);
    while(t--){
        flag=1,ed=-1;
        scanf("%d",&m);
        for(i=0;i<m;i++){
            scanf("%d",&in[i]);
            if(!flag) continue;
            l=s[in[i]],r=arr[in[i]].size();
            while(l+1<r && r){
                mi=(l+r)/2;
                if(arr[in[i]][mi]<ed) l=mi;
                else r=mi;
            }
            s[in[i]]=l;
            while(s[in[i]]<arr[in[i]].size() && arr[in[i]][s[in[i]]]<ed) s[in[i]]++;
            if(s[in[i]]>=arr[in[i]].size() || arr[in[i]][s[in[i]]]<ed){
                flag=0;
                continue;
            }
            ed=arr[in[i]][s[in[i]]++];
        }
        for(i=0;i<m;i++)
            s[in[i]]=0;
        if(flag) puts("TAK");
        else puts("NIE");
    }
}

沒有留言:

張貼留言