CodeChef submission 130641 (C++ 4.0.0-8) plaintext list. Status: RE, problem J2, contest NOV09. By kevindra (kevindra), 2009-11-11 11:04:07.
#include<string> #include<iostream> #include<map> #include<vector> #include<algorithm> #include<math.h> #include<functional> #include<stdio.h> typedef long long ll; typedef long double ld; #define ind(n) scanf("%d",&n) #define outd(n) printf("%d",n) #define inf(n) scanf("%f",&n) #define outf(n) printf("%f",n) #define inl(n) scanf("%ld",&n) #define outl(n) printf("%ld",n) #define inll(n) scanf("%lld",&n) #define outll(n) printf("%lld",n) #define inc(n) scanf("%c",&n) #define outc(n) printf("%c",n) #define ins(n) scanf("%s",n) #define outs(n) printf("%s",n) #define MAX(a,b) a<b?b:a; #define MIN(a,b) a<b?a:b; #define fori(i,n) for(i=0; i<n; i++) #define ford(i,n) for(i=n; i>=0; i--) #define allocate(type,size) (type*)malloc(size*sizeof(type)); template<class T> T MIN3(T a,T b,T c){ T t = MIN(a,b); return MIN(c,t); } template<class T> T MAX3(T a,T b,T c){ T t = MAX(a,b); return MAX(c,t); } template<class T> T** allocate2D(T **a,int r,int c){ for(size_t i = 0 ; i < r ; i++) return a; } using namespace std; ll *l; char a[1000],b[1000]; ll maximum=0; map<string,int> mstr[10]; ll lcs(int i,int j,string s1,int t,ll length){ if(*(a+i)=='\0' || *(b+j)=='\0'){ //if(length > maximum) maximum = length; if(mstr[t][s1] == 0){ l[length] += 1; mstr[t][s1] = 1; } return length; } //if(length >= maximum){ if(*(a+i)==*(b+j)){ s1+=*(a+i);return lcs (i+1,j+1,s1,t,length+1); } else{ return MAX( lcs(i,j+1,s1,t,length), lcs(i+1,j,s1,t,length) ); } //} //else return length; } int main(){ int t; ind(t); while(t--){ ins(a); ins(b); maximum=0; ll len = lcs(0,0,"",t,0); cout<<len<<" "<<l[len]%23102009<<"\n"; } return 0; }
Comments

