Thursday, 8 May 2014

SPOJ Problem Set (classical) 13404. The Encrypted Password Problem code: ICPC12C

// http://www.spoj.com/problems/ICPC12C/

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <map>
#include <string>
#include <cstring>
#include <sstream>
#include <fstream>
#include <climits>
#include <ctime>
#include <algorithm>
#include <bits/stdc++.h>
using namespace std;
int cum[26];
int main()
{
 int t;
 scanf("%d ",&t);
 while(t--)
 {
  char s[100009],o[100009];
  scanf("%s",s);
  scanf("%s",o);
  int i=0,a[27],j,flag,k;
  for(i=0;i<26;i++)
   cum[i]=0,a[i]=0;
  i=0;
  while(o[i] != '\0')
  {
   j=o[i] - 97;
   a[j]++;
   i++;
  }
  int size=i;
  i=0;
  while(i<size)
  {
   k=s[i++] -97;
   cum[k]++;
  }
  if(size == strlen(s)){
   flag=1;
   for(i=0;i<26;i++)
    if(cum[i] != a[i])
    {
     flag=0;
     break;
    }
   if(flag)
    printf("YES\n");
   else
    printf("NO\n");
   continue;
  }
  i=size;
  while(s[i]!='\0')
  {
   flag=1;
   k=s[i] - 97;
   cum[k]++;
   k=s[i-size]-97;
   cum[k]--;
   for(j=0;j<26;j++)
    if(cum[j] != a[j])
    {
     flag=0;
     break;
    }
   if(flag)
    break;
   i++;
  }
  if(flag)
   printf("YES\n");
  else
   printf("NO\n");
 }
 return 0;
}

No comments:

Post a Comment