11824

#include <iostream> #include <cstdio> #include <cstdio> #include <cstring> #include <vector> #include <cmath> #include <cstdlib> #include <algorithm> #define LMT 5000000 #define ll long long using namespace std; bool cmp(int a,int b) { return a>b; } ll _pow(int a,int p) { ll ans=1; while(p–) { ans=ans*a; if(ans>=LMT) return LMT; } return ans; } int main() { vector<int>

10188

#include <iostream> #include <cstdio> #include <cstdio> #include <cstring> #include <string> #include <vector> #include <cmath> #include <cstdlib> using namespace std; string s,ans; string str,str1; int n,m; bool accept() { if(n!=m) return 0; if(str==str1) return 1; return 0; } bool presentation() { string num1="",num2=""; for(int i=0;i<str.size();i++) { if(isdigit(str[i])) num1.append(1u,str[i]); } for(int i=0;i<str1.size();i++) { if(isdigit(str1[i])) num2.append(1u,str1[i]); } if(num1==num2)

11917

#include <iostream> #include <cstdio> #include <sstream> #include <string> #include <map> using namespace std; int main() { int t,n,d,D; scanf("%d",&t); string sub,s; int kase=1,res; while(t–) { scanf("%d",&n); map<string,int> mp; for(int i=1;i<=n;i++) { cin>>s; scanf("%d",&d); mp[s]=d; } scanf("%d",&D); cin>>sub; res = mp[sub]; if(res==0 || res>(D+5)) printf("Case %d: Do your own homework!\n",kase++); else if(res>D && res<=(D+5)) printf("Case %d:

1282

Theory: The idea for solving the problem is: for any fibonacci word F(n) = F(n-1)+F(n-2) = F(n-2)+F(n-3)+F(n-2), so word F(n-2) is both suffix and prefix of word F(n). After observing a little more we can find that F(n-2) will always be the prefix for all the rest of the fibonacci word.Now find the minimum F(n-3)

11475

#include <iostream> #include <cstdio> #include <cstdio> #include <cstring> #include <vector> #include <cmath> #include <cstdlib> #define INF 1000000 #define ll long long using namespace std; int main() { char s[100005]; string str; int len,i,j,idx; int *failureFunc; while(scanf("%s",s)!=EOF) { len=strlen(s); str=""; for(int y=len-1;y>=0;y–) str.append(1u,s[y]); failureFunc=(int *)malloc(sizeof(int)*len); failureFunc[0]=0; i=0; j=1; while(j<len) { if(str[i]==str[j]) { i+=1; failureFunc[j]=i; j+=1; }

11466

There should be a better approach to improve the time complexity. #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <vector> #include <cmath> #define ull unsigned long long #define ll long long using namespace std; bool prime[35000000]; vector<int> prm; int main() { double n; int mxprime,cnt; ull num; for(int i=2;i<35000000;i++) { if(prime[i]==0) { prm.push_back(i); for(int

11369

#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <vector> #include <algorithm> #define ll long long using namespace std; vector<int> vb; bool cmp(int a,int b) { return a>b; } int main() { int t,n,a; cin>>t; ll sum; while(t–) { cin>>n; vb.clear(); for(int i=0;i<n;i++) { cin>>a; vb.push_back(a); } sort(vb.begin(),vb.end(),cmp); if(n<3) printf("0\n"); else { sum=0; for(int i=2;i<n;i+=3)

11059

#include <iostream> #include <cstdio> #include <cstring> #define ll long long //-1000000000000000000 using namespace std; int main() { int n,kase=1; int a[20]; ll max_end_here,max_so_far; while(scanf("%d",&n)!=EOF) { for(int i=0;i<n;i++) { scanf("%d",&a[i]); } max_so_far=0; for(int i=0;i<n;i++) { for(int j=i;j<n;j++) { max_end_here=1; for(int k=i;k<=j;k++) { max_end_here*=a[k]; } if(max_so_far<max_end_here) max_so_far = max_end_here; } } printf("Case #%d: The maximum product is

10714

#include <iostream> #include <cstdio> #include <cstring> #include <string> //#define INF 10000000 using namespace std; int main() { int t,diff,mn,mx; int len,num,a,c,d; int early,late; scanf("%d",&t); while(t–) { scanf("%d%d",&len,&num); mn=0; mx=0; for(int i=0;i<num;i++) { scanf("%d",&a); diff= len-a; c = max(diff,a); d = min(diff,a); mx = max(mx,c); mn = max(mn,d); //early=max(d,mn); } printf("%d %d\n",mn,mx); } return 0; }

10533

#include <iostream> #include <cstdio> #include <sstream> #include <string> using namespace std; bool prime[1000001]; bool firstPrime[1000001]; int primeCount[1000001]; bool checkdigit(int a) { int sum; if(a<10) return 1; else { sum=0; while(a) { sum+=a%10; a/=10; } if(firstPrime[sum]==0) return 1; else return 0; } return 0; } int main() { int cnt=0; prime[0]=1; prime[1]=1; firstPrime[0]=1; firstPrime[1]=1; primeCount[0]=cnt; primeCount[1]=cnt;