#include<iostream>
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
#define MX 100000
#define MOD 1000000007
int main()
{
string s[MX];
map<char,int>mp;
char c;
int cnt=0;
while(cin>>s[cnt++])
if(s[cnt-1]=="#")
break;
for(int i=0;i<20;i++)
for(int j=0;j<cnt-1;j++)
if(i<s[j].length())
{
c=s[j][i];
if(mp[c]!=1)
{
cout<<c;
mp[c]=1;
}
}
cout<<endl;
return 0;
}
Saturday, 30 June 2012
UVa 386 - Perfect Cubes Solution
#include<iostream>
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
#define MX 100000
#define MOD 1000000007
int main()
{
int qa,qb,qc,qd,qsum;
for(int i=6;i<=200;i++)
{
qa= (int) pow((double) i, 3);
for(int j=2;j<=200;j++)
{
qb= (int) pow((double) j, 3);
for(int k=j+1;k<=200;k++)
{
qc= (int) pow((double) k, 3);
for(int l=k+1;l<=200;l++)
{
qd= (int) pow((double) l, 3);
qsum=qb+qc+qd;
if(qa == qsum)
cout<<"Cube = "<<i<<", Triple = ("<<j<<","<<k<<","<<l<<")"<<endl;
}
}
}
}
return 0;
}
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
#define MX 100000
#define MOD 1000000007
int main()
{
int qa,qb,qc,qd,qsum;
for(int i=6;i<=200;i++)
{
qa= (int) pow((double) i, 3);
for(int j=2;j<=200;j++)
{
qb= (int) pow((double) j, 3);
for(int k=j+1;k<=200;k++)
{
qc= (int) pow((double) k, 3);
for(int l=k+1;l<=200;l++)
{
qd= (int) pow((double) l, 3);
qsum=qb+qc+qd;
if(qa == qsum)
cout<<"Cube = "<<i<<", Triple = ("<<j<<","<<k<<","<<l<<")"<<endl;
}
}
}
}
return 0;
}
UVa 10220 - I Love Big Numbers ! Solution
import java.util.*;
import java.math.*;
class Main
{
public static void main(String[] args)
{
int n,i;
long ans;
BigInteger sum,tmp;
Scanner scan=new Scanner(System.in);
while(scan.hasNextInt())
{
n=scan.nextInt();
ans=0;
sum= BigInteger.valueOf(1);
for(i=2;i<=n;i++)
{
tmp = BigInteger.valueOf(i);
sum=sum.multiply(tmp);
}
String result = sum.toString();
char[] characters=result.toCharArray();
for(i=0; i<result.length(); i++)
ans +=characters[i]-'0';
System.out.println(ans);
}
}
}
import java.math.*;
class Main
{
public static void main(String[] args)
{
int n,i;
long ans;
BigInteger sum,tmp;
Scanner scan=new Scanner(System.in);
while(scan.hasNextInt())
{
n=scan.nextInt();
ans=0;
sum= BigInteger.valueOf(1);
for(i=2;i<=n;i++)
{
tmp = BigInteger.valueOf(i);
sum=sum.multiply(tmp);
}
String result = sum.toString();
char[] characters=result.toCharArray();
for(i=0; i<result.length(); i++)
ans +=characters[i]-'0';
System.out.println(ans);
}
}
}
UVa 10784 - Diagonal Solution
#include<iostream>
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
#define MX 100000
#define MOD 1000000007
int main()
{
LL ans, n,kk=1;
double d;
while(cin>>n && n)
{
d = (3.0 + sqrt( 9.0 + (n*8.0)))/2.0;
ans=d;
if(ans!=d)
ans++;
cout<<"Case "<<kk++<<": "<<ans<<endl;
}
return 0;
}
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
#define MX 100000
#define MOD 1000000007
int main()
{
LL ans, n,kk=1;
double d;
while(cin>>n && n)
{
d = (3.0 + sqrt( 9.0 + (n*8.0)))/2.0;
ans=d;
if(ans!=d)
ans++;
cout<<"Case "<<kk++<<": "<<ans<<endl;
}
return 0;
}
UVa 10700 - Camel trading Solution
#include<iostream>
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(LL i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
#define MX 100000
#define MOD 1000000007
LL multi_first(string line)
{
stack<LL>stk;
istringstream ss(line);
LL num;
LL mn=0;
char c;
ss>>num;
stk.push(num);
while(ss>>c)
{
if(c=='*')
{
LL x=stk.top();
stk.pop();
ss>>num;
stk.push(num*x);
}
else
{
ss>>num;
stk.push(num);
}
}
while(!stk.empty())
{
mn+=stk.top();
stk.pop();
}
return mn;
}
LL add_first(string line)
{
stack<LL>stk;
istringstream ss(line);
LL num;
LL mx=1;
char c;
ss>>num;
stk.push(num);
while(ss>>c)
{
if(c=='+')
{
LL x=stk.top();
stk.pop();
ss>>num;
stk.push(num+x);
}
else
{
ss>>num;
stk.push(num);
}
}
while(!stk.empty())
{
mx*=stk.top();
stk.pop();
}
return mx;
}
int main()
{
LL mn,mx,tmp;
LL t,num;
char c;
string line;
cin>>t;
getchar();
while(t--)
{
getline(cin,line);
//istringstream ss(line);
//cout<<multi_first(line)<<endl;
//cout<<add_first(line)<<endl;
cout<<"The maximum and minimum are "<<add_first(line)<<" and "<<multi_first(line)<<"."<<endl;
}
return 0;
}
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(LL i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
#define MX 100000
#define MOD 1000000007
LL multi_first(string line)
{
stack<LL>stk;
istringstream ss(line);
LL num;
LL mn=0;
char c;
ss>>num;
stk.push(num);
while(ss>>c)
{
if(c=='*')
{
LL x=stk.top();
stk.pop();
ss>>num;
stk.push(num*x);
}
else
{
ss>>num;
stk.push(num);
}
}
while(!stk.empty())
{
mn+=stk.top();
stk.pop();
}
return mn;
}
LL add_first(string line)
{
stack<LL>stk;
istringstream ss(line);
LL num;
LL mx=1;
char c;
ss>>num;
stk.push(num);
while(ss>>c)
{
if(c=='+')
{
LL x=stk.top();
stk.pop();
ss>>num;
stk.push(num+x);
}
else
{
ss>>num;
stk.push(num);
}
}
while(!stk.empty())
{
mx*=stk.top();
stk.pop();
}
return mx;
}
int main()
{
LL mn,mx,tmp;
LL t,num;
char c;
string line;
cin>>t;
getchar();
while(t--)
{
getline(cin,line);
//istringstream ss(line);
//cout<<multi_first(line)<<endl;
//cout<<add_first(line)<<endl;
cout<<"The maximum and minimum are "<<add_first(line)<<" and "<<multi_first(line)<<"."<<endl;
}
return 0;
}
Wednesday, 27 June 2012
UVa 10790 - How Many Points of Intersection? Solution
#include<iostream>
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
#define MX 100000
#define MOD 1000000007
int main()
{
LL a,b,suma,sumb,t,kk=1;
while(cin>>a>>b)
{
if(a==0 && b==0)
break;
suma=(a*(a-1))/2;
sumb=(b*(b-1))/2;
cout<<"Case "<<kk++<<": "<<suma*sumb<<endl;
}
return 0;
}
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
#define MX 100000
#define MOD 1000000007
int main()
{
LL a,b,suma,sumb,t,kk=1;
while(cin>>a>>b)
{
if(a==0 && b==0)
break;
suma=(a*(a-1))/2;
sumb=(b*(b-1))/2;
cout<<"Case "<<kk++<<": "<<suma*sumb<<endl;
}
return 0;
}
Monday, 18 June 2012
UVa 12470 - Tribonacci Solution
#include<iostream>
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define MOD 1000000009
struct A{
long long arr[10][10];
};
A MatrixMulti(A a, A b)
{
A result;
int i,j,k;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
result.arr[i][j]=0;
for(k=0;k<3;k++)
result.arr[i][j]+=(a.arr[i][k]*b.arr[k][j]);
result.arr[i][j]=result.arr[i][j]%MOD;
}
return result;
}
A BigMod(A a, long long n)
{
A ret;
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
if(i==j)
ret.arr[i][j]=1;
else
ret.arr[i][j]=0;
}
while(n)
{
if(n & 1)
ret=MatrixMulti(ret,a);
a=MatrixMulti(a,a);
n>>=1;
}
return ret;
}
int main()
{
A initialMatrix,ans;
long long n,m,i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
initialMatrix.arr[i][j]=1;
initialMatrix.arr[1][1]=initialMatrix.arr[1][2]=initialMatrix.arr[2][0]=initialMatrix.arr[2][2]=0;
while(cin>>n && n)
{
if(n==1)
{
cout<<"0"<<endl;
continue;
}
if(n==2)
{
cout<<"1"<<endl;
continue;
}
ans=BigMod(initialMatrix,n-3);
cout<<(ans.arr[0][0]*2+ans.arr[0][1])%MOD<<endl;
}
return 0;
}
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define MOD 1000000009
struct A{
long long arr[10][10];
};
A MatrixMulti(A a, A b)
{
A result;
int i,j,k;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
result.arr[i][j]=0;
for(k=0;k<3;k++)
result.arr[i][j]+=(a.arr[i][k]*b.arr[k][j]);
result.arr[i][j]=result.arr[i][j]%MOD;
}
return result;
}
A BigMod(A a, long long n)
{
A ret;
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
if(i==j)
ret.arr[i][j]=1;
else
ret.arr[i][j]=0;
}
while(n)
{
if(n & 1)
ret=MatrixMulti(ret,a);
a=MatrixMulti(a,a);
n>>=1;
}
return ret;
}
int main()
{
A initialMatrix,ans;
long long n,m,i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
initialMatrix.arr[i][j]=1;
initialMatrix.arr[1][1]=initialMatrix.arr[1][2]=initialMatrix.arr[2][0]=initialMatrix.arr[2][2]=0;
while(cin>>n && n)
{
if(n==1)
{
cout<<"0"<<endl;
continue;
}
if(n==2)
{
cout<<"1"<<endl;
continue;
}
ans=BigMod(initialMatrix,n-3);
cout<<(ans.arr[0][0]*2+ans.arr[0][1])%MOD<<endl;
}
return 0;
}
UVa 12468 - Zapping Solution
#include<iostream>
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
int main()
{
long long a,b,c,d,ans;
while(cin>>a>>b)
{
if(a==-1 && b==-1) break;
c=abs(a-b);
if(c>=50)
c=100-c;
cout<<c<<endl;
}
return 0;
}
UVa 12465 - The Turanga Leela Problem Solution
#include<iostream>
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
int main()
{
long long a,b,c,d,ans;
while(cin>>a>>b)
{
if(!a && !b) break;
c=abs(a-b);
d=sqrt(c);
ans=0;
for(int i=1;i<=d;i++)
if(c%i==0)
ans+=2;
if(d*d==c)
ans--;
cout<<ans<<endl;
}
return 0;
}
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
int main()
{
long long a,b,c,d,ans;
while(cin>>a>>b)
{
if(!a && !b) break;
c=abs(a-b);
d=sqrt(c);
ans=0;
for(int i=1;i<=d;i++)
if(c%i==0)
ans+=2;
if(d*d==c)
ans--;
cout<<ans<<endl;
}
return 0;
}
UVa 12464 - Professor Lazy, Ph.D. Solution
#include<iostream>
using namespace std;
int main()
{
long long a,b,c;
while(cin>>a>>b>>c)
{ if(!a && !b && !c) break;
c=c%5;
if(c==0)
cout<<a<<endl;
else if(c==1)
cout<<b<<endl;
else if(c==2)
cout<<(b+1)/a<<endl;
else if(c==3)
cout<<(a+b+1)/(a*b)<<endl;
else if(c==4)
cout<<(a+1)/b<<endl;
}
return 0;
}
using namespace std;
int main()
{
long long a,b,c;
while(cin>>a>>b>>c)
{ if(!a && !b && !c) break;
c=c%5;
if(c==0)
cout<<a<<endl;
else if(c==1)
cout<<b<<endl;
else if(c==2)
cout<<(b+1)/a<<endl;
else if(c==3)
cout<<(a+b+1)/(a*b)<<endl;
else if(c==4)
cout<<(a+1)/b<<endl;
}
return 0;
}
UVa 12463 - Little Nephew Solution
#include<iostream>
using namespace std;
int main()
{
long long a,b,c,d,e;
while(cin>>a>>b>>c>>d>>e && a && b && c && d &&e)
{
cout<<a*b*c*d*d*e*e<<endl;
}
return 0;
}
using namespace std;
int main()
{
long long a,b,c,d,e;
while(cin>>a>>b>>c>>d>>e && a && b && c && d &&e)
{
cout<<a*b*c*d*d*e*e<<endl;
}
return 0;
}
Friday, 15 June 2012
UVa 12469 - Stones Solution
#include<iostream>
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
#define MX 100000
#define MOD 1000000007
bool isfib[1000+10];
int fib[20],n;
int main()
{
fib[0]=0;
fib[1]=1;
for(int i=2;i<18;i++)
{
int x=fib[i]=fib[i-1]+fib[i-2];
isfib[x]=true;
}
while(cin>>n && n)
{
if(n==1 || !isfib[n])
cout<<"Alicia"<<endl;
else
cout<<"Roberto"<<endl;
}
return 0;
}
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
#define MX 100000
#define MOD 1000000007
bool isfib[1000+10];
int fib[20],n;
int main()
{
fib[0]=0;
fib[1]=1;
for(int i=2;i<18;i++)
{
int x=fib[i]=fib[i-1]+fib[i-2];
isfib[x]=true;
}
while(cin>>n && n)
{
if(n==1 || !isfib[n])
cout<<"Alicia"<<endl;
else
cout<<"Roberto"<<endl;
}
return 0;
}
UVa 12461 - Airplane Solution
#include<iostream>
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
#define MX 100000
#define MOD 1000000007
int main()
{
int n;
while(cin>>n && n)
cout<<"1/2"<<endl;
return 0;
}
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
#define MX 100000
#define MOD 1000000007
int main()
{
int n;
while(cin>>n && n)
cout<<"1/2"<<endl;
return 0;
}
UVa 12462 - Rectangle Solution
#include<iostream>
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
#define MX 100100
LL colorNum[MX][40];
LL n,c,t,kk=1,histogram[MX],i,lft[MX],rgt[MX],mx,color[MX];
int main()
{
stack<LL>stk;
while(cin>>n>>c &&n &&c)
{
for(i=1;i<=n;i++)
scanf("%lld",&histogram[i]);
CLR(colorNum);
for(i=1;i<=n;i++)
{
scanf("%lld",&color[i]);
long long cl=color[i];
colorNum[i][cl]=(colorNum[i-1][cl])+1;
for(int j=0;j<cl;j++)
colorNum[i][j]=colorNum[i-1][j];
for(int j=cl+1;j<c;j++)
colorNum[i][j]=colorNum[i-1][j];
}
while(!stk.empty())
stk.pop();
stk.push(0);
histogram[0]=0;
for(i=1;i<=n;i++)
{
while(histogram[stk.top()]>=histogram[i])
stk.pop();
lft[i]= stk.top()+1;
stk.push(i);
}
while(!stk.empty())
stk.pop();
stk.push(n+1);
histogram[n+1]=0;
for(i=n;i>0;i--)
{
while(histogram[stk.top()]>=histogram[i])
stk.pop();
rgt[i]= stk.top()-1;
stk.push(i);
}
mx=0;
for(i=1;i<=n;i++)
{
bool chk=true;;
for(int j=0;j<c;j++)
if(colorNum[rgt[i]][j] - colorNum[lft[i]-1][j]==0)
chk=false;
if(chk)
mx=max(mx,(rgt[i]-lft[i]+1)*histogram[i]);
}
cout<<mx<<endl;
}
return 0;
}
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
#define MX 100100
LL colorNum[MX][40];
LL n,c,t,kk=1,histogram[MX],i,lft[MX],rgt[MX],mx,color[MX];
int main()
{
stack<LL>stk;
while(cin>>n>>c &&n &&c)
{
for(i=1;i<=n;i++)
scanf("%lld",&histogram[i]);
CLR(colorNum);
for(i=1;i<=n;i++)
{
scanf("%lld",&color[i]);
long long cl=color[i];
colorNum[i][cl]=(colorNum[i-1][cl])+1;
for(int j=0;j<cl;j++)
colorNum[i][j]=colorNum[i-1][j];
for(int j=cl+1;j<c;j++)
colorNum[i][j]=colorNum[i-1][j];
}
while(!stk.empty())
stk.pop();
stk.push(0);
histogram[0]=0;
for(i=1;i<=n;i++)
{
while(histogram[stk.top()]>=histogram[i])
stk.pop();
lft[i]= stk.top()+1;
stk.push(i);
}
while(!stk.empty())
stk.pop();
stk.push(n+1);
histogram[n+1]=0;
for(i=n;i>0;i--)
{
while(histogram[stk.top()]>=histogram[i])
stk.pop();
rgt[i]= stk.top()-1;
stk.push(i);
}
mx=0;
for(i=1;i<=n;i++)
{
bool chk=true;;
for(int j=0;j<c;j++)
if(colorNum[rgt[i]][j] - colorNum[lft[i]-1][j]==0)
chk=false;
if(chk)
mx=max(mx,(rgt[i]-lft[i]+1)*histogram[i]);
}
cout<<mx<<endl;
}
return 0;
}
Wednesday, 13 June 2012
Websites to find Crack, Keygen or Serial Key
*** http://www.serialkey.net/
*** http://www.keygenguru.com/
*** http://www.zcrack.com/
*** http:// www.supercracks.net/
http:// www.serialportal.com/
http:// www.serialcrackz.com/
http://www.serials.be/
http:// www.smartserials.com/
http://www.cracksfm.com/
http://www.cracklib.net/
http://www.crackdb.org/
http://www.keygens.nl/
http://www.crackfind.com/
http:// www.crackserialkeygen.com/
http:// www.keygenmusic.net/
http://www.cracktop.com/
http:// www.crack-keygen-site.com/
*** http://www.keygenguru.com/
*** http://www.zcrack.com/
*** http://
http://
http://
http://www.serials.be/
http://
http://www.cracksfm.com/
http://www.cracklib.net/
http://www.crackdb.org/
http://www.keygens.nl/
http://www.crackfind.com/
http://
http://
http://www.cracktop.com/
http://
UVa 315 Network Solution
#include<iostream>
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
#define MX 100000
#define INF 2000000000
#define MOD 1000000007
bool visit[110];
vector<long>edge[110];
int n;
void dfs(int node)
{
visit[node]=true;
for(int j=0;j<edge[node].size();j++)
if(!visit[edge[node][j]])
dfs(edge[node][j]);
}
int Articulation_point()
{
for(int i=1;i<=n;i++)
if(!visit[i])
return 1;
return 0;
}
int main()
{
int i, f, t,ans;
string line;
//READ("input.txt");
//WRITE("a.txt");
while(cin>>n)
{
if(n==0)
break;
if(n==1)
{
cin>>f;
cout<<"0"<<endl;
continue;
}
getchar();
while(getline(cin,line))
{
istringstream ss(line);
ss>>f;
if(f==0)
break;
while(ss>>t)
{
edge[f].PB(t);
edge[t].PB(f);
}
}
ans=0;
for(i=2;i<=n;i++)
{
CLR(visit);
visit[i]=true;
dfs(1);
ans+=Articulation_point();
}
CLR(visit);
visit[1]=true;
dfs(2);
ans+=Articulation_point();
cout<<ans<<endl;
for(i=1;i<=n;i++)
edge[i].clear();
}
return 0;
}
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
#define MX 100000
#define INF 2000000000
#define MOD 1000000007
bool visit[110];
vector<long>edge[110];
int n;
void dfs(int node)
{
visit[node]=true;
for(int j=0;j<edge[node].size();j++)
if(!visit[edge[node][j]])
dfs(edge[node][j]);
}
int Articulation_point()
{
for(int i=1;i<=n;i++)
if(!visit[i])
return 1;
return 0;
}
int main()
{
int i, f, t,ans;
string line;
//READ("input.txt");
//WRITE("a.txt");
while(cin>>n)
{
if(n==0)
break;
if(n==1)
{
cin>>f;
cout<<"0"<<endl;
continue;
}
getchar();
while(getline(cin,line))
{
istringstream ss(line);
ss>>f;
if(f==0)
break;
while(ss>>t)
{
edge[f].PB(t);
edge[t].PB(f);
}
}
ans=0;
for(i=2;i<=n;i++)
{
CLR(visit);
visit[i]=true;
dfs(1);
ans+=Articulation_point();
}
CLR(visit);
visit[1]=true;
dfs(2);
ans+=Articulation_point();
cout<<ans<<endl;
for(i=1;i<=n;i++)
edge[i].clear();
}
return 0;
}
Sunday, 10 June 2012
UVa 10817 Headmaster's Headache Solution
#include<iostream>
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
int cost[110],n,s,m;
vector<int>sub[110];
int memo[110][1<<9][1<<9];
int func(int pos, int bitmask1, int bitmask2)
{
if( ( bitmask1==((1<<s)-1)) && (bitmask2==((1<<s)-1)))
return 0;
if(pos>n) return 10000000;
if(memo[pos][bitmask1][bitmask2]!=-1) return memo[pos][bitmask1][bitmask2];
int tmp1, tmp2;
tmp1=bitmask1;
tmp2=bitmask2;
for(int i=0;i<sub[pos].size();i++)
{
int x=sub[pos][i];
if((tmp1 & (1<<x))==0)
tmp1 = tmp1 | (1<<x);
else
tmp2 = tmp2 | (1<<x);
}
return memo[pos][bitmask1][bitmask2]=min(func(pos+1, bitmask1, bitmask2), cost[pos]+func(pos+1, tmp1, tmp2));
}
int main()
{
string s_line;
int x,i,mask1,mask2,ans,cst;
while(cin>>s>>m>>n)
{
if(s==0) break;
s++;
ans=0;
mask1=1;
mask2=1;
for(i=1;i<=m;i++)
{
cin>>cst;
ans+=cst;
getline(cin, s_line);
istringstream ss1(s_line);
while(ss1>>x)
{
if((mask1 & (1<<x))==0)
mask1 = mask1 | (1<<x);
else
mask2 = mask2 | (1<<x);
}
}
for(i=1;i<=n;i++)
{
cin>>cost[i];
getline(cin, s_line);
istringstream ss(s_line);
while(ss>>x)
sub[i].PB(x);
}
SET(memo);
ans+=func(1, mask1, mask2);
cout<<ans<<endl;
for(i=1;i<=n;i++)
sub[i].clear();
}
}
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
int cost[110],n,s,m;
vector<int>sub[110];
int memo[110][1<<9][1<<9];
int func(int pos, int bitmask1, int bitmask2)
{
if( ( bitmask1==((1<<s)-1)) && (bitmask2==((1<<s)-1)))
return 0;
if(pos>n) return 10000000;
if(memo[pos][bitmask1][bitmask2]!=-1) return memo[pos][bitmask1][bitmask2];
int tmp1, tmp2;
tmp1=bitmask1;
tmp2=bitmask2;
for(int i=0;i<sub[pos].size();i++)
{
int x=sub[pos][i];
if((tmp1 & (1<<x))==0)
tmp1 = tmp1 | (1<<x);
else
tmp2 = tmp2 | (1<<x);
}
return memo[pos][bitmask1][bitmask2]=min(func(pos+1, bitmask1, bitmask2), cost[pos]+func(pos+1, tmp1, tmp2));
}
int main()
{
string s_line;
int x,i,mask1,mask2,ans,cst;
while(cin>>s>>m>>n)
{
if(s==0) break;
s++;
ans=0;
mask1=1;
mask2=1;
for(i=1;i<=m;i++)
{
cin>>cst;
ans+=cst;
getline(cin, s_line);
istringstream ss1(s_line);
while(ss1>>x)
{
if((mask1 & (1<<x))==0)
mask1 = mask1 | (1<<x);
else
mask2 = mask2 | (1<<x);
}
}
for(i=1;i<=n;i++)
{
cin>>cost[i];
getline(cin, s_line);
istringstream ss(s_line);
while(ss>>x)
sub[i].PB(x);
}
SET(memo);
ans+=func(1, mask1, mask2);
cout<<ans<<endl;
for(i=1;i<=n;i++)
sub[i].clear();
}
}
Friday, 8 June 2012
UVa 446 Kibbles `n' Bits `n' Bits `n' Bits Solution
#include<iostream>
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
string DecToBin(int number)
{
if ( number == 0 ) return "0";
if ( number == 1 ) return "1";
if ( number % 2 == 0 )
return DecToBin(number / 2) + "0";
else
return DecToBin(number / 2) + "1";
}
int main()
{
LL hex1,hex2,n,ans;
char c;
string s;
cin>>n;
while(n--)
{
cin>>hex>>hex1>>c>>hex>>hex2;
s=DecToBin(hex1);
stringstream ss;
ss<<s;
ss>>ans;
printf("%013lld %c ",ans,c);
s=DecToBin(hex2);
stringstream ss2;
ss2<<s;
ss2>>ans;
printf("%013lld = ",ans);
if(c=='-')
cout<<hex1-hex2<<endl;
else
cout<<hex1+hex2<<endl;
}
return 0;
}
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
string DecToBin(int number)
{
if ( number == 0 ) return "0";
if ( number == 1 ) return "1";
if ( number % 2 == 0 )
return DecToBin(number / 2) + "0";
else
return DecToBin(number / 2) + "1";
}
int main()
{
LL hex1,hex2,n,ans;
char c;
string s;
cin>>n;
while(n--)
{
cin>>hex>>hex1>>c>>hex>>hex2;
s=DecToBin(hex1);
stringstream ss;
ss<<s;
ss>>ans;
printf("%013lld %c ",ans,c);
s=DecToBin(hex2);
stringstream ss2;
ss2<<s;
ss2>>ans;
printf("%013lld = ",ans);
if(c=='-')
cout<<hex1-hex2<<endl;
else
cout<<hex1+hex2<<endl;
}
return 0;
}
Sunday, 3 June 2012
UVa 10496 Collecting Beepers Solution
#include<iostream>
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
struct Z{
int x,y;
}beeper[12];
int memo[12][1<<11],beepersNum;
int func(int prev, int bitmask)
{
if(bitmask==(1<<beepersNum)-1)
return abs(beeper[prev].x-beeper[0].x)+abs(beeper[prev].y-beeper[0].y);
if(memo[prev][bitmask]!=-1) return memo[prev][bitmask];
int ret=1000000;
for(int i=0;i<beepersNum;i++)
if((bitmask & (1<<i))==0)
ret=min(ret, func(i, bitmask | (1<<i))+abs(beeper[i].x-beeper[prev].x)+abs(beeper[i].y-beeper[prev].y));
return memo[prev][bitmask]=ret;
}
int main()
{
int tc,faltu;
cin>>tc;
while(tc--)
{
cin>>faltu>>faltu;
cin>>beeper[0].x>>beeper[0].y;
cin>>beepersNum;
beepersNum++;
for(int i=1;i<beepersNum;i++)
cin>>beeper[i].x>>beeper[i].y;
SET(memo);
cout<<"The shortest path has length "<<func(0,1)<<endl;
}
return 0;
}
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define INF (1<<29)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define FOR(i,n) for(int i = 0;i<n;i++)
#define PI acos(-1.0)
#define EPS 1e-9
#define MP(a,b) make_pair(a,b)
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define LL long long
struct Z{
int x,y;
}beeper[12];
int memo[12][1<<11],beepersNum;
int func(int prev, int bitmask)
{
if(bitmask==(1<<beepersNum)-1)
return abs(beeper[prev].x-beeper[0].x)+abs(beeper[prev].y-beeper[0].y);
if(memo[prev][bitmask]!=-1) return memo[prev][bitmask];
int ret=1000000;
for(int i=0;i<beepersNum;i++)
if((bitmask & (1<<i))==0)
ret=min(ret, func(i, bitmask | (1<<i))+abs(beeper[i].x-beeper[prev].x)+abs(beeper[i].y-beeper[prev].y));
return memo[prev][bitmask]=ret;
}
int main()
{
int tc,faltu;
cin>>tc;
while(tc--)
{
cin>>faltu>>faltu;
cin>>beeper[0].x>>beeper[0].y;
cin>>beepersNum;
beepersNum++;
for(int i=1;i<beepersNum;i++)
cin>>beeper[i].x>>beeper[i].y;
SET(memo);
cout<<"The shortest path has length "<<func(0,1)<<endl;
}
return 0;
}
UVa 11614 Etruscan Warriors Never Play Chess Solution
# include <stdio.h>
# include <math.h>
int main()
{
long long i,n,t,sum;
scanf("%lld",&t);
for(i=1;i<=t;i++)
{
scanf("%lld",&n);
sum = (sqrt(1+8*n)-1)/2;
printf("%lld\n",sum);
}
return 0;
}
# include <math.h>
int main()
{
long long i,n,t,sum;
scanf("%lld",&t);
for(i=1;i<=t;i++)
{
scanf("%lld",&n);
sum = (sqrt(1+8*n)-1)/2;
printf("%lld\n",sum);
}
return 0;
}
UVa 11483 Code Creator Solution
#include <cstdio> char line[2048], ans[2048]; int main(void){ int N, cnum = 0; while(scanf("%d",&N) && N){ printf("Case %d:\n", ++cnum); puts("#include<string.h>\n#include<stdio.h>\nint main()\n{"); while(N--){ fgets(line, 2048, stdin); if(line[0] == 10){ N++; continue;} register char *p, *o = ans; fputs("printf(\"",stdout); for(p = line; *p != 10; p++){ if(*p == '\\' || *p == '\"') *o++ = '\\'; *o++ = *p; } *o++ = '\\'; *o++ = 'n'; *o++ = '\"'; *o++ = ')'; *o++ = ';'; *o = 0; puts(ans); } puts("printf(\"\\n\");\nreturn 0;\n}"); } return 0; }
UVa 12157 Tariff Plan Solution
#include <cstdio> int main(void){ int T, N, mile, juice, x, cnum = 0; scanf("%d",&T); while(T--){ scanf("%d",&N); mile = juice = 0; for(int i = 0; i < N; ++i){ scanf("%d",&x); mile += (x + 30)/30; juice += (x + 60)/60; } mile *= 10; juice *= 15; printf("Case %d: ",++cnum); if(mile < juice) printf("Mile %d\n",mile); else if(juice < mile) printf("Juice %d\n",juice); else printf("Mile Juice %d\n",mile); } return 0; }
UVa 12019 Doom's Day Algorithm Solution
#include <cstdio> const int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; const char *wd[7] = {"Friday", "Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday"}; int cd[12]; int main(void){ int t; scanf("%d", &t); cd[0] = days[0]; for(int i = 1; i < 12; ++i) cd[i] = days[i] + cd[i - 1]; for(int d, m; t-- && scanf("%d %d", &m, &d); ){ int nday = d; if(--m) nday += cd[m - 1]; //printf("%d %d -> %d\n", m, d, nday); puts(wd[nday % 7]); } return 0; }
UVa 11945 Financial Management Solution
#include <clocale> #include <cstdio> int main(void){ int T; scanf("%d", &T); setlocale(LC_ALL, "en_US.UTF-8"); for(int cnum = 0; cnum++ < T; ){ double r = 0, z; for(int i = 0; i < 12; ++i, r += z) scanf("%lf", &z); printf("%d $%'.2lf\n", cnum, r / 12.0); } return 0; }
UVa 11723 Numbering Roads Solution
#include <cstdio> int main(void){ int R, N; for(int cnum = 0; (scanf("%d %d", &R, &N) && R); ){ printf("Case %d: ", ++cnum); int s = (R - 1)/N; if(s > 26) printf("impossible\n"); else printf("%d\n", s); } return 0; }
UVa 11687 Digits Solution
#include <cstdio> #include <cstring> char digits(unsigned int x){ register char ret = 0; while(x) x/=10, ret++; return ret; } int main(void){ register char c; unsigned int cnt; bool mark; while((c = getc( stdin )) != 'E'){ cnt = mark = 1; if(c == '1') mark = 0; while((c = getc( stdin )) != '\n') cnt++; if(cnt == 1) printf("%d\n",cnt+mark); else if(cnt < 10) printf("%d\n",3); else printf("%d\n",4); } return 0; }
UVa 11661 Burger Time? Solution
#include <cstdio>
int main(void){
register char c;
int d, i, ld, lr, temp, L;
while(scanf("%d\n",&L) && L){
d = 1<<25;
lr = ld = -1;
for(i = 0; i < L; i++){
c = getc( stdin );
if(c == '.') continue;
if(c == 'R'){
if(ld != -1){
temp = i - ld;
if(temp < d) d = temp;
}
lr = i;
} else if(c == 'D'){
if(lr != -1){
temp = i - lr;
if(temp < d) d = temp;
}
ld = i;
} else if(c == 'Z'){
d = 0;
break;
}
}
while(++i <= L) getc( stdin );
printf("%d\n",d);
}
return 0;
}
int main(void){
register char c;
int d, i, ld, lr, temp, L;
while(scanf("%d\n",&L) && L){
d = 1<<25;
lr = ld = -1;
for(i = 0; i < L; i++){
c = getc( stdin );
if(c == '.') continue;
if(c == 'R'){
if(ld != -1){
temp = i - ld;
if(temp < d) d = temp;
}
lr = i;
} else if(c == 'D'){
if(lr != -1){
temp = i - lr;
if(temp < d) d = temp;
}
ld = i;
} else if(c == 'Z'){
d = 0;
break;
}
}
while(++i <= L) getc( stdin );
printf("%d\n",d);
}
return 0;
}
UVa 11455 Behold my quadrangle Solution
# include <stdio.h>
int main()
{
int n,i,ar[5],j,k,temp;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d %d %d %d",&ar[0],&ar[1],&ar[2],&ar[3]);
if(ar[0]==ar[1] && ar[1]==ar[2] && ar[2]==ar[3])
printf("square\n");
else
{
for(j=0;j<3;j++)
{
for(k=0;k<3-j;k++)
{
if(ar[k]>ar[k+1])
{
temp = ar[k];
ar[k] = ar[k+1];
ar[k+1] = temp;
}
}
}
if(ar[0]==ar[1] && ar[2]==ar[3])
printf("rectangle\n");
else if((ar[0]+ar[1]+ar[2])>ar[3])
printf("quadrangle\n");
else
printf("banana\n");
}
}
return 0;
}
int main()
{
int n,i,ar[5],j,k,temp;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d %d %d %d",&ar[0],&ar[1],&ar[2],&ar[3]);
if(ar[0]==ar[1] && ar[1]==ar[2] && ar[2]==ar[3])
printf("square\n");
else
{
for(j=0;j<3;j++)
{
for(k=0;k<3-j;k++)
{
if(ar[k]>ar[k+1])
{
temp = ar[k];
ar[k] = ar[k+1];
ar[k+1] = temp;
}
}
}
if(ar[0]==ar[1] && ar[2]==ar[3])
printf("rectangle\n");
else if((ar[0]+ar[1]+ar[2])>ar[3])
printf("quadrangle\n");
else
printf("banana\n");
}
}
return 0;
}
UVa 11389 The Bus Driver Problem Solution
#include<stdio.h>
void selection(int x[],int n);
int main()
{ int n,d,r,i,morning[100],evening[100],dtime,totaltime;
while(scanf("%d%d%d",&n,&d,&r)==3)
{
if(n==0 && d==0 && r==0)
break;
totaltime=0;
for(i=0;i<n;i++)
scanf("%d",&morning[i]);
for(i=0;i<n;i++)
scanf("%d",&evening[i]);
selection(morning,n);
selection(evening,n);
/*for(i=0;i<n;i++)
printf("%d ",morning[i]);
for(i=0;i<n;i++)
printf("%d ",evening[i]); */
for(i=0;i<n;i++)
{
dtime=morning[i]+evening[n-1-i];
if(dtime>d)
totaltime=totaltime+(dtime-d);
}
printf("%d\n",totaltime*r);
}
return 0;
}
void selection(int x[],int n)
{
int i,j,minvalue,temp;
for(i=0;i<n-1;i++)
{
minvalue=i;
for(j=i+1;j<n;j++)
{
if(x[minvalue]>x[j])
{
minvalue=j;
}
}
if(minvalue!=i)
{
temp=x[i];
x[i]=x[minvalue];
x[minvalue]=temp;
}
}
}
void selection(int x[],int n);
int main()
{ int n,d,r,i,morning[100],evening[100],dtime,totaltime;
while(scanf("%d%d%d",&n,&d,&r)==3)
{
if(n==0 && d==0 && r==0)
break;
totaltime=0;
for(i=0;i<n;i++)
scanf("%d",&morning[i]);
for(i=0;i<n;i++)
scanf("%d",&evening[i]);
selection(morning,n);
selection(evening,n);
/*for(i=0;i<n;i++)
printf("%d ",morning[i]);
for(i=0;i<n;i++)
printf("%d ",evening[i]); */
for(i=0;i<n;i++)
{
dtime=morning[i]+evening[n-1-i];
if(dtime>d)
totaltime=totaltime+(dtime-d);
}
printf("%d\n",totaltime*r);
}
return 0;
}
void selection(int x[],int n)
{
int i,j,minvalue,temp;
for(i=0;i<n-1;i++)
{
minvalue=i;
for(j=i+1;j<n;j++)
{
if(x[minvalue]>x[j])
{
minvalue=j;
}
}
if(minvalue!=i)
{
temp=x[i];
x[i]=x[minvalue];
x[minvalue]=temp;
}
}
}
UVa 11369 Shopaholic Solution
#include<stdio.h>
#include<algorithm>
#include<iostream>
using namespace std;
int main()
{
int n,t,price[20001],i,j;
long int discount;
scanf("%d",&t);
for(i=0;i<t;i++)
{ discount=0;
scanf("%d",&n);
for(j=0;j<n;j++)
scanf("%d",&price[j]);
sort(price,price+n);
for(j=n-3;j>=0;j=j-3)
discount=discount+price[j];
printf("%ld\n",discount);
}
return 0;
}
#include<algorithm>
#include<iostream>
using namespace std;
int main()
{
int n,t,price[20001],i,j;
long int discount;
scanf("%d",&t);
for(i=0;i<t;i++)
{ discount=0;
scanf("%d",&n);
for(j=0;j<n;j++)
scanf("%d",&price[j]);
sort(price,price+n);
for(j=n-3;j>=0;j=j-3)
discount=discount+price[j];
printf("%ld\n",discount);
}
return 0;
}
UVa 11292 Dragon of Loowater Solution
#include <cstdio>
#include <set>
using namespace std;
multiset<int> k;
int h[32768], n;
int main(){
multiset < int >::iterator it;
for (int c, fail, m, n, v; scanf("%d %d",&n,&m)!=EOF && (n || m); ){
k.clear(); c = fail = 0;
for(int i = 0; i < n; ++i) scanf("%d", &h[i]);
for(int i = 0; i < m; ++i) scanf("%d", &v), k.insert(v);
for(int i = 0; i < n; ++i){
if((it = k.lower_bound(h[i])) == k.end()){ fail = 1; break;}
c += *it;
k.erase(it);
}
if(fail) puts("Loowater is doomed!");
else printf("%d\n", c);
}
}
#include <set>
using namespace std;
multiset<int> k;
int h[32768], n;
int main(){
multiset < int >::iterator it;
for (int c, fail, m, n, v; scanf("%d %d",&n,&m)!=EOF && (n || m); ){
k.clear(); c = fail = 0;
for(int i = 0; i < n; ++i) scanf("%d", &h[i]);
for(int i = 0; i < m; ++i) scanf("%d", &v), k.insert(v);
for(int i = 0; i < n; ++i){
if((it = k.lower_bound(h[i])) == k.end()){ fail = 1; break;}
c += *it;
k.erase(it);
}
if(fail) puts("Loowater is doomed!");
else printf("%d\n", c);
}
}
UVa 11233 Deli Deli Solution
#include <stdio.h>
#include <string.h>
struct x
{
char word[100];
char pword[100];
}a[100];
int main()
{
int L,N;
while(scanf("%d %d",&L,&N)==2)
{
int i,j;
for(i=1;i<=L;i++)
scanf("%s %s",&a[i].word,&a[i].pword);
for(j=1;j<=N;j++)
{
char name[100];
scanf("%s",name);
int k=0;
for(i=1;i<=L;i++)
if(strcmp(name,a[i].word)==0)
{
printf("%s\n",a[i].pword);
k=1;
break;
}
if(k==0)
{
int c=strlen(name);
int b=c-1;
if(name[b]=='y' && (name[b-1]!='a'&& name[b-1]!='e'&& name[b-1]!='i'&& name[b-1]!='o' && name[b-1]!='u'))
{ name[b++]='i';
name[b++]='e';
name[b++]='s';
name[b]='\0';
printf("%s\n",name);
}
else if(name[b]=='o'|| name[b]=='s' ||(name[b]=='h' && name[b-1]=='c')|| ( name[b]=='h' && name[b-1]=='s')|| name[b]=='x')
{
name[c++]='e';
name[c++]='s';
name[c]='\0';
printf("%s\n",name);
}
else
{
name[c++]='s';
name[c]='\0';
printf("%s\n",name);
}
}
}
}
return 0;
}
#include <string.h>
struct x
{
char word[100];
char pword[100];
}a[100];
int main()
{
int L,N;
while(scanf("%d %d",&L,&N)==2)
{
int i,j;
for(i=1;i<=L;i++)
scanf("%s %s",&a[i].word,&a[i].pword);
for(j=1;j<=N;j++)
{
char name[100];
scanf("%s",name);
int k=0;
for(i=1;i<=L;i++)
if(strcmp(name,a[i].word)==0)
{
printf("%s\n",a[i].pword);
k=1;
break;
}
if(k==0)
{
int c=strlen(name);
int b=c-1;
if(name[b]=='y' && (name[b-1]!='a'&& name[b-1]!='e'&& name[b-1]!='i'&& name[b-1]!='o' && name[b-1]!='u'))
{ name[b++]='i';
name[b++]='e';
name[b++]='s';
name[b]='\0';
printf("%s\n",name);
}
else if(name[b]=='o'|| name[b]=='s' ||(name[b]=='h' && name[b-1]=='c')|| ( name[b]=='h' && name[b-1]=='s')|| name[b]=='x')
{
name[c++]='e';
name[c++]='s';
name[c]='\0';
printf("%s\n",name);
}
else
{
name[c++]='s';
name[c]='\0';
printf("%s\n",name);
}
}
}
}
return 0;
}
UVa 10530 Guessing Game Solution
#include <stdio.h>
#include <string.h>
int main()
{
int n,a[12]={0},i;
char str[20];
while(scanf("%d",&n) && n)
{ getchar();
gets(str);
if(strcmp(str,"too low")==0)
{
for(i=n;i>=1;i--)
a[i]=-1;
}
else if(strcmp(str,"too high")==0)
{
for(i=n;i<=10;i++)
a[i]=-1;
}
else
{
if(a[n]==0)
printf("Stan may be honest\n");
else
printf("Stan is dishonest\n");
for(i=0;i<=10;i++)
a[i]=0;
}
}
return 0;
}
#include <string.h>
int main()
{
int n,a[12]={0},i;
char str[20];
while(scanf("%d",&n) && n)
{ getchar();
gets(str);
if(strcmp(str,"too low")==0)
{
for(i=n;i>=1;i--)
a[i]=-1;
}
else if(strcmp(str,"too high")==0)
{
for(i=n;i<=10;i++)
a[i]=-1;
}
else
{
if(a[n]==0)
printf("Stan may be honest\n");
else
printf("Stan is dishonest\n");
for(i=0;i<=10;i++)
a[i]=0;
}
}
return 0;
}
UVa 10450 World Cup Noise Solution
#include <stdio.h> unsigned long long int dp[51][2]; unsigned long long int nSequence(int n,int last) { if(dp[n][last]!=-1) return dp[n][last]; else if(last) return dp[n][last] =nSequence(n-1,0); else return dp[n][last] = nSequence(n-1,1) + nSequence(n-1,0); } int main() { int i,c,cc; for(i=0;i<51;i++) dp[i][0]=dp[i][1]=-1; dp[1][0]=2; dp[1][1]=1; cc = 1; scanf("%d",&c); while(c--) { scanf("%d",&i); printf("Scenario #%d:\n",cc++); printf("%llu\n\n",nSequence(i,0)); } return 0; }
UVa 10409 Die Game Solution
#include<cstdio>
#include<string.h>
int main()
{
int N;
char side[10];
int north,south,east,west,top,bottom,tempBottom,tempTop;
while ((scanf("%d",&N)==1)&&N>0)
{
top = 1;
bottom = 6;
east = 4;
west = 3;
north = 2;
south = 5;
while (N--)
{
scanf("%s",&side);
if (strcmp(side, "north") == 0)
{
tempBottom = bottom;
tempTop = top;
top = south;
bottom = north;
south = tempBottom;
north = tempTop;
}
else if (strcmp(side, "south") == 0)
{
tempBottom = bottom;
tempTop = top;
top = north;
bottom = south;
south = tempTop;
north = tempBottom;
}
else if (strcmp(side, "east") == 0)
{
tempBottom = bottom;
tempTop = top;
top = west;
bottom = east;
west = tempBottom;
east = tempTop;
}
else if (strcmp(side, "west") == 0)
{
tempBottom = bottom;
tempTop = top;
top = east;
bottom = west;
east = tempBottom;
west = tempTop;
}
}
printf("%d\n",top);
}
}
#include<string.h>
int main()
{
int N;
char side[10];
int north,south,east,west,top,bottom,tempBottom,tempTop;
while ((scanf("%d",&N)==1)&&N>0)
{
top = 1;
bottom = 6;
east = 4;
west = 3;
north = 2;
south = 5;
while (N--)
{
scanf("%s",&side);
if (strcmp(side, "north") == 0)
{
tempBottom = bottom;
tempTop = top;
top = south;
bottom = north;
south = tempBottom;
north = tempTop;
}
else if (strcmp(side, "south") == 0)
{
tempBottom = bottom;
tempTop = top;
top = north;
bottom = south;
south = tempTop;
north = tempBottom;
}
else if (strcmp(side, "east") == 0)
{
tempBottom = bottom;
tempTop = top;
top = west;
bottom = east;
west = tempBottom;
east = tempTop;
}
else if (strcmp(side, "west") == 0)
{
tempBottom = bottom;
tempTop = top;
top = east;
bottom = west;
east = tempBottom;
west = tempTop;
}
}
printf("%d\n",top);
}
}
UVa 10388 Mischievous children Solution
#include <stdio.h>
#include <string.h>
char ascii[26];
char factorials[21];
unsigned long long int results[21];
int main()
{
unsigned long long int res;
register int i,j,cc;
cc = 1;
int c;
char s[21];
results[2]=2;
for(i=3;i<21;i++)results[i]=results[i-1]*i;
scanf("%d",&c);
getchar();
while(c-->0)
{
res = 1;
gets(s);
for(j=0;j<=20;j++)factorials[j]=0;
for(i=0;i<26;i++)ascii[i]=0;
i = strlen(s);
for(j=0;j<i;j++)
ascii[s[j]-'A']++;
for(j=0;j<26;j++)
factorials[ascii[j]]++;
res = results[i];
for(j=2;j<=20;j++)
for(i=1;i<=factorials[j];i++)
res/=results[j];
printf("Data set %d: %llu\n",cc++,res);
}
return 0;
}
#include <string.h>
char ascii[26];
char factorials[21];
unsigned long long int results[21];
int main()
{
unsigned long long int res;
register int i,j,cc;
cc = 1;
int c;
char s[21];
results[2]=2;
for(i=3;i<21;i++)results[i]=results[i-1]*i;
scanf("%d",&c);
getchar();
while(c-->0)
{
res = 1;
gets(s);
for(j=0;j<=20;j++)factorials[j]=0;
for(i=0;i<26;i++)ascii[i]=0;
i = strlen(s);
for(j=0;j<i;j++)
ascii[s[j]-'A']++;
for(j=0;j<26;j++)
factorials[ascii[j]]++;
res = results[i];
for(j=2;j<=20;j++)
for(i=1;i<=factorials[j];i++)
res/=results[j];
printf("Data set %d: %llu\n",cc++,res);
}
return 0;
}
UVa 10295 Hay Points Solution
#include <iostream>#include <string>#include <algorithm>using namespace std;struct word{string str;int dollar;}dics[1200];inline bool comp(word a, word b){if (a.str > b.str) return false;return true;}int binarySearch(string a, int h){int low, mid, high = h;low = 0;while (low <= high){mid = (high + low) / 2;if (dics[mid].str == a)return mid;else if (dics[mid].str < a)low = mid + 1;elsehigh = mid - 1;}return -1;}int main(){int m, n, k, i, dollar;string a;while (cin >> m >> n){for (i = 0; i < m; ++i)cin >> dics[i].str >> dics[i].dollar;sort(dics, dics+m, comp);for (i = 0; i < n; ++i){dollar = 0;while (cin >> a){if (a == ".") break;k = binarySearch(a, m);if (k != -1)dollar += dics[k].dollar;}cout << dollar << endl;}}return 0;}
UVa 10282 Babelfish Solution
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef
struct
w {
char
en[25], xx[25];
} word;
word dict[1000002] = {0,0};
int
cmp(
const
void
*a,
const
void
*b) {
return
strcmp
(((word *)a)->xx,((word *)b)->xx);
}
int
main() {
int
I=0, J;
char
INPUT[100], *p;
word *q, QUERY;
while
(
gets
(INPUT)) {
if
(!
strcmp
(INPUT,
""
))
break
;
p =
strtok
(INPUT,
" "
);
strcpy
(dict[I].en,p);
p =
strtok
(NULL,
" "
);
strcpy
(dict[I].xx,p);
I++;
}
qsort
(dict,I,
sizeof
(word),cmp);
while
(
scanf
(
"%s"
,QUERY.xx)!=EOF) {
q =
bsearch
(&QUERY,dict,I,
sizeof
(word),cmp);
if
(q!=NULL) {
printf
(
"%s\n"
,q->en);
}
else
{
printf
(
"eh\n"
);
}
}
return
0;
}
UVa 10279 Mine Sweeper Solution
#include <iostream>#include <string>using namespace std;char data[20][20];char str[20][20];char output[20][20];int dr[] = {-1, -1, -1, 0, 1, 1, 1, 0};int dc[] = {-1, 0, 1, 1, 1, 0, -1, -1};void init(int n){for (int i = 0; i < n; ++i){for (int j = 0; j < n; ++j)output[i][j] = '.';}}char check(int n, int R, int C){int i, r, c, num = 0;for (i = 0; i < 8; ++i){r = R + dr[i];c = C + dc[i];if ( r >= 0 && r < n && c >= 0 && c < n){if (data[r][c] == '*')++num;}}return num+48;}void checkAll(int n){for (int i = 0; i < n; ++i){for (int j = 0; j < n; ++j){if (data[i][j] == '*')output[i][j] = '*';}}}int main(){//freopen("input.txt", "r", stdin);//freopen("output.txt", "w", stdout);bool flag = false;int test, i, j, t, n;cin >> test;while (test--){cin >> n;if (flag) cout << endl; flag = true;init(n);for (t = 0; t < n; ++t)cin >> data[t];for (t = 0; t < n; ++t)cin >> str[t];for (i = 0; i < n; ++i){for (j = 0; j < n; ++j){if (data[i][j] == '.' && str[i][j] == 'x'){output[i][j] = check(n, i, j);}if (data[i][j] == '*' && str[i][j] == 'x'){checkAll(n);}}}for (i = 0; i < n; ++i){for (j = 0; j < n; ++j)cout << output[i][j];cout << endl;}}return 0;}
Subscribe to:
Posts (Atom)