Pagini recente » Diferente pentru utilizator/mateisirghe intre reviziile 25 si 123 | O problema misto - solutie | Diferente pentru utilizator/indmium_ intre reviziile 8 si 15 | Diferente pentru utilizator/blackodd intre reviziile 5 si 15 | Cod sursa (job #1036596)
#include<stdio.h>
#include<algorithm>
#define buff_size 20000
using namespace std;
FILE*f=fopen("dtcsu.in","r");
FILE*g=fopen("dtcsu.out","w");
int ch,sol;
const int n = 276997;
char buff[buff_size+5];
long long A[100000];
inline long long next () {
long long r = 0;
while ( !(buff[ch] >= '0' && buff[ch] <= '9') ){
++ch;
if ( ch == buff_size ){
fread(buff,1,buff_size,f);
ch = 0;
}
}
while ( buff[ch] >= '0' && buff[ch] <= '9'){
r = r * 10 + buff[ch]-'0';
++ch;
if ( ch == buff_size ){
fread(buff,1,buff_size,f);
ch = 0;
}
}
++ch;
if ( ch == buff_size ){
fread(buff,1,buff_size,f);
ch = 0;
}
return r;
}
int main () {
long long x = 0;
for ( int i = 1 ; i <= n ; ++i ){
x = next();
if ( x % 11 == 0 ) continue ;
A[++A[0]] = x;
}
int q = next();
sort(A+1,A+A[0]+1);
int left,middle,right;
for ( int i = 1 ; i <= q ; ++i ){
x = next();
while ( x % 11 == 0 ) x /= 11;
left = 1,right = A[0];
while ( left <= right ){
middle = (left+right)>>1;
if ( A[middle] == x ){
++sol; break ;
}
if ( A[middle] < x ){
left = middle+1;
}
else{
right = middle-1;
}
}
}
fprintf(g,"%d\n",sol);
fclose(f);
fclose(g);
return 0;
}