#include<stdio.h> #include<queue> #include<iostream> #include<algorithm> using namespace std; typedef long long ll; ll ar[1000006]; int main() { deque<ll> dq; ll n,i,k; scanf("%lld",&n); for(i=1;i<=n;i++) scanf("%lld",&ar[i]); scanf("%lld",&k); for(i=1;i<=k;i++) { while(dq.empty()==false && ar[i]>=ar[dq.back()]) dq.pop_back(); dq.push_back(i); } for(i=k+1;i<=n;i++) { printf("%lld ",ar[dq.front()]); while(dq.empty()==false && ar[i]>=ar[dq.back()]) dq.pop_back(); while(dq.empty()==false && i-dq.front()>=k) dq.pop_front(); dq.push_back(i); } printf("%lld",ar[dq.front()]); return 0; }
SPOJ – AIBOHP – Aibohphobia
#include<stdio.h> #include<iostream> #include<string.h> #include<vector> #include<algorithm> using namespace std; typedef long long ll; ll max(ll a,ll b) { if(a>=b) return a; else return b; } ll dp[6103][6103]; int main() { char ar[6103]; char at[6103]; ll t,i,j,n; scanf("%lld",&t); while(t--) { scanf("%s",ar); n=strlen(ar); reverse(ar,ar+n); for(i=0;i<n;i++) at[i]=ar[i]; reverse(ar,ar+n); for(i=n;i>0;i--) { at[i]=at[i-1]; ar[i]=ar[i-1]; } for(i=0;i<=n;i++) dp[i][0]=0; for(i=0;i<=n;i++) dp[0][i]=0; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(ar[i]==at[j]) dp[i][j]=1+dp[i-1][j-1]; else dp[i][j]=max(dp[i-1][j],dp[i][j-1]); } } ll ans=n-dp[n][n]; printf("%lld\n",ans); } return 0; return 0; }
SPOJ – ABCPATH
#include<stdio.h> #include<iostream> #include<string.h> using namespace std; typedef int ll; ll n,m; char ar[55][55]; ll dp[55][55]; ll drx[8]={1,1,0,-1,-1,-1,0,1}; ll dry[8]={0,1,1,1,0,-1,-1,-1}; ll dfs(ll a,ll b) { ll i,j; ll x,y; if(dp[a][b]!=-1) return dp[a][b]; else { dp[a][b]=1; for(i=0;i<8;i++) { x=a+drx[i]; y=b+dry[i]; if(x>=0 && y>=0 && x<n && y<m ) if((ar[a][b]-'0')+1==(ar[x][y]-'0')) dp[a][b]=max(dp[a][b],1+dfs(x,y)); } } return dp[a][b]; } int main() { ll i,j,ans,ans1=-1; ll q=1; while(scanf("%d%d",&n,&m) && (n!=0 || m!=0)) { memset(dp,-1,sizeof(dp)); ans1=0; for(i=0;i<n;i++) cin>> ar[i]; for(i=0;i<n;i++) { for(j=0;j<m;j++) { if(ar[i][j]=='A') { ans=dfs(i,j); if(ans>ans1) ans1=ans; } } } printf("Case %d: %d\n",q++,ans1); } return 0; }
SPOJ – ABCDEF
#include<stdio.h> #include<algorithm> using namespace std; typedef long long ll; ll ar1[1000004]; ll ar2[1000004]; int main() { ll ar[102]; ll b=0,n,i; scanf("%lld",&n); for(i=0;i<n;i++) scanf("%lld",&ar[i]); ll j,k; for(i=0;i<n;i++) { for(j=0;j<n;j++) { for(k=0;k<n;k++) { ar1[b++]=(ar[i]*ar[j])+ar[k]; } } } ll b1=0; for(i=0;i<n;i++) { for(j=0;j<n;j++) { for(k=0;k<n;k++) { if(ar[k]==0) continue; ar2[b1++]=(ar[i]+ar[j])*ar[k]; } } } std::sort(ar1,ar1+b); std::sort(ar2,ar2+b1); ll count=0; ll o=0,t=0; for(i=0;i<b;i++) { ll k1=lower_bound(ar2,ar2+b1,ar1[i])-ar2; ll k2=upper_bound(ar2,ar2+b1,ar1[i])-ar2; count=count+k2-k1; } printf("%lld\n",count); return 0; }
UVA – 12442 – Forwarding Emails
#include<stdio.h> #include<iostream> #include<string.h> #include<vector> using namespace std; typedef long long ll; vector<ll> v[500004]; ll visit[500004]; ll d[500004]; ll dfs(ll n) { visit[n]=1; ll i; ll ans=0; for(i=0;i<v[n].size();i++) { ll k=v[n][i]; if(visit[k]==0) { ans=1+dfs(k); } } d[n]=ans; visit[n]=0; return ans; } int main() { ll t,n,k,i,a,b; scanf("%lld",&t); ll s=1; while(t--) { ll max=-1; for(i=0;i<=50000;i++) v[i].clear(); ll p; scanf("%lld",&n); for(i=0;i<n;i++) { scanf("%lld%lld",&a,&b); v[a].push_back(b); } memset(visit,0,sizeof(visit)); for(i=0;i<=50000;i++) d[i]=-1; for(i=1;i<=n;i++) { if(d[i]==-1) { ll g=dfs(i); if(g>max) { max=g; p=i; } } } printf("Case %lld: %lld\n",s++,p); } return 0; }
UVA – 10139 – Factovisors
#include<stdio.h> typedef long long ll; struct node{ ll a,b; }; ll g=0; struct node ar[100000]; void prime(ll n) { ll i; ll count; count=0; while(n%2==0) { n=n/2; count++; } if(count!=0) { ar[g].a=2; ar[g].b=count; g++; } for(i=3;i*i<=n;i=i+2) { count=0; while(n%i==0) { n=n/i; count++; } if(count!=0) { ar[g].a=i; ar[g].b=count; g++; } } count=0; if(n>1) { ar[g].a=n; ar[g].b=1; g++; } } ll get_power(ll n,ll p) { ll ans=0; ll i; for(i=p;i<=n;i=i*p) { ans=ans+n/i; } return ans; } int main() { ll n,m,i; ll p,k1,k2; while(scanf("%lld%lld",&n,&m)!=EOF) { g=0; prime(m); p=1; for(i=0;i<g;i++) { k1=get_power(n,ar[i].a); k2=ar[i].b; if(k1<k2) { p=2; break; } } if(p==2) { printf("%lld does not divide %lld!\n",m,n); continue; } printf("%lld divides %lld!\n",m,n); } return 0; }
UVA – 10892 – LCM Cardinality
#include<stdio.h> typedef long long ll; ll prime(ll n) { ll ans=1; ll count=0; while(n%2==0) { n=n/2; count++; } ans=ans*(2*count+1); count=0; ll i; for(i=3;i*i<=n;i++) { count=0; while(n%i==0) { count++; n=n/i; } ans=ans*(2*count+1); } if(n>1) ans=ans*3; return ans; } int main() { ll n; while(scanf("%lld",&n) && n!=0) { ll k=prime(n); printf("%lld %lld\n",n,(k/2)+1); } return 0; }
UVA – 10212 – The Last Non-zero Digit.
#include<stdio.h> #include<string.h> #include<stdlib.h> #define mod 20000000 typedef long long ll; int main() { ll n,m,i,ans,j,k; while(scanf("%lld%lld",&n,&m)!=EOF) { ans=1; for(i=n,j=0;j<m;j++,i--) { ans=ans*i; while(ans%10==0) { ans=ans/10; } ans=ans%mod; } printf("%lld\n",ans%10); } return 0; }
UVA – 11344 – The Huge One
#include<stdio.h> #include<string.h> typedef long long ll; int main() { ll t,n,i,x,p,a; ll r; char ar[10004]; scanf("%lld",&t); while(t--) { p=1; scanf("%s",ar); n=strlen(ar); scanf("%lld",&x); while(x--) { scanf("%lld",&a); r=(ar[0]-'0')%a; for(i=1;i<n;i++) r=(r*10+ar[i]-'0')%a; if(r!=0) p=2; } if(p==2) printf("%s - Simple.\n",ar); else printf("%s - Wonderful.\n",ar); } return 0; }
UVA – 10127 – Ones
#include<stdio.h> #include<math.h> #include<stdlib.h> typedef long long ll; int main() { ll n; ll count; while(scanf("%lld",&n)!=EOF) { count=1; ll r=1; while(r%n!=0) { count++; r=(10*r+1)%n; } printf("%lld\n",count); } return 0; }