Tuesday, December 27, 2016

UVA 558 - Wormholes

#include
#define sf scanf
#define pf printf
#define inf 1e18
#define INF 1000000000
#define MAX_N 5001
#define MAX_E 25000001
using namespace std;
typedef long long lld;

int v, e;

int dist[MAX_N];
struct Edge
{
    int x, y, weight;
    Edge(int _x, int _y, int _weight){
    x = _x;
    y = _y;
    weight = _weight;
    }
};
vector E;

int BellmanFord(int source)
{
    for (int i=0;i    {
        if (i == source) dist[i]=0;
        else dist[i] = INF;
    }
    bool done = false;
    for (int i=0;!done&&i    {
        done = true;
        for (int j=0;j        {
            int so = E[j].x;
            int de = E[j].y;
            if (dist[so] + E[j].weight < dist[de])
            {
                dist[de] = dist[so] + E[j].weight;
                done=false;
            }
        }
    }
    if (!done) return -1;
    return 0;
}

int main()
{
int t;
cin >> t;
while(t--){
E.clear();
    v  , e;
    cin >> v >> e;
    for(int i=0; i    int u , v , w;
    cin >> u >> v >> w;
    E.push_back(Edge(u,v,w));
    }
    BellmanFord(0) == -1 ? cout<<"possible\n":cout<<"not possible\n";
}
 
    return 0;

}

UVA 10986 - Sending email

#include <bits/stdc++.h>
#define sf scanf
#define pf printf
#define inf 1e18
#define MAX 1000000000
using namespace std;
struct Node{
int at , cost;
Node(int _at, int _cost){
at = _at;
cost = _cost;
}
};
bool operator<(Node A , Node B){
return A.cost > B.cost;
}
struct Edge{
int v, w;
Edge(int _v, int _w){
v = _v;
w = _w;
}
};
vector <Edge> adj[20000+1];
priority_queue<Node>PQ;
int dist[20000+1];
int n;

void dijkstra(int s){
for(int i=0; i<=n; i++){
dist[i] = MAX;
}
dist[s] = 0;
PQ.push(Node(s,0));

while(!PQ.empty()){
Node u = PQ.top();
PQ.pop();
if(u.cost != dist[u.at]){
continue;
}
for(Edge e: adj[u.at]){
if(dist[e.v] > u.cost + e.w){
dist[e.v] = u.cost + e.w;
PQ.push(Node(e.v, dist[e.v]));
}
}
}
}
int main()
{
ios_base::sync_with_stdio(0);
int t,kase=0;
cin >> t;
while(t--){
memset(adj,0,sizeof adj);
while(!PQ.empty())PQ.pop();
  int edges , s , t;
  cin >> n >> edges >> s >>t;
  for(int i=0; i<edges; i++){
  int u , v , w;
  cin >>u >> v >> w;
  adj[u].push_back(Edge(v,w));
  adj[v].push_back(Edge(u,w));
  }
  dijkstra(s);
  if(dist[t] == MAX)cout <<"Case #"<<++kase<<": unreachable\n";
  else cout <<"Case #"<<++kase<<": "<<dist[t]<<'\n';
}



return 0;
}

Sunday, December 25, 2016

UVA 762 - We Ship Cheap

#include <bits/stdc++.h>
#define sf scanf
#define pf printf
using namespace std;
map<string, bool>visited;
void bfs(string start , string end , map<string , vector<string> >mp)
{
vector<pair<string, string> >vp;
queue<string>q;
q.push(start);
visited[start] = true;
bool flag = false;
while(!q.empty()){
string top = q.front();
q.pop();
for(int i=0; i<mp[top].size(); i++){
if(!visited[mp[top][i]]){
visited[mp[top][i]] = true;
if(mp[top][i] != end){
vp.push_back(make_pair(top , mp[top][i]));
q.push(mp[top][i]);
}else if(mp[top][i] == end){
flag = true;
vp.push_back(make_pair(top , mp[top][i]));
break;
}
}
}
if(flag)break;
}
if(!flag && q.empty())cout << "No route\n";
else{
for(int i=0; i<vp.size(); i++)
cout << vp[i].first<< ' '<<vp[i].second<<'\n';
}

}
int main()
{
ios_base::sync_with_stdio(0);
int t;
bool first = true;
while(cin >> t){
if(!first)cout <<'\n';
first = false;
map<string , vector<string> > mp;
visited.clear();
while(t--){
string u , v;
cin >> u >> v;
mp[u].push_back(v);
mp[v].push_back(u);
}
string start, end;
cin >> start >> end;
bfs(start , end , mp);
}
}

UVA 336 - A Node Too Far

#include <bits/stdc++.h>
#define sf scanf
#define pf printf
using namespace std;
map<int, int>visited;

void bfs(int start, map<int, vector<int> > graph)
{
queue<int>q;
q.push(start);
visited[start] = 0;
while(!q.empty()){
int top = q.front();
q.pop();
int size = graph[top].size();
for(int i=0; i<size; i++){
int n = graph[top][i];
if(!visited.count(n)){
visited[n]=visited[top]+1;
q.push(n);
}
}
}

}

int main()
{
ios_base::sync_with_stdio(0);
int nodes , a  , b , kase =0;
while(cin >> nodes && nodes){
map<int, vector<int> >graph;
for(int i=0; i<nodes; i++){
cin >> a >> b;
graph[a].push_back(b);
graph[b].push_back(a);
}
int ttl , start;
while(cin >> start >> ttl ){
if(start==0 && ttl ==0)break;
map<int, int>::const_iterator it;
visited.clear();
bfs(start , graph);
int cnt =0;
for(it = visited.begin(); it!=visited.end(); it++){
if((*it).second >ttl)cnt++;
}
cnt += graph.size()-visited.size();

cout << "Case "<<++kase << ": "<<cnt <<" nodes not reachable from node "<<start<<" with TTL = "<<ttl<<".\n";

}
}
}

Wednesday, December 14, 2016

UVA 280 - Vertex

#include<bits/stdc++.h>
using namespace std;
vector<int>adj[105];
bool vis[105];
void bfs(int s , int nodes)
{
    fill(vis,vis+nodes,false);
    queue<int>q;
    while(!q.empty())q.pop();
    q.push(s);
    while(!q.empty()){
        int fr = q.front();
        q.pop();
        for(int i = 0; i < adj[fr].size(); i++){
            if(!vis[adj[fr][i]]){
                vis[adj[fr][i]] = true;
                q.push(adj[fr][i]);
            }

        }

    }
    int cnt = 0;
    for(int i=0; i<nodes; i++){
        if(!vis[i])cnt++;
    }
    cout <<cnt;
    for(int i=0; i<nodes; i++){
        if(!vis[i])cout <<' '<<i+1;
    }
    cout << '\n';

}

int main()
{
    int nodes;
    while(cin >> nodes && nodes){

        memset(adj,0,sizeof adj);

        int i;
        while(cin >> i && i){
            int j;
            while( cin >> j && j){
                adj[i-1].push_back(j-1);
            }
        }
        int t;
        cin >> t;
        while(t--){
            int query;
            cin >> query;
            bfs(query-1 , nodes);
        }

    }

return 0;
}

Saturday, November 5, 2016

UVA 11371 - Number Theory for Newbies

#include<bits/stdc++.h>
#define sf scanf
#define pf printf
#define LL long long
#define REP(i,MAX) for(LL i = 0; i<MAX; i++)
#define MAX 10000000+10
using namespace std;
int main()
{
    char s[100];
    while(cin >> s){
    sort(s, s+strlen(s));
    for (int i = 0; i < strlen(s); ++i)
    {
    if(s[i] != '0'){
    swap(s[0],s[i]);
    break;
    }
    }
    long long a , b;
    sscanf(s,"%lld",&b);
    sort(s, s+strlen(s));
    for (int i = 0 , j =strlen(s)-1; i < j; ++i,j--)
    {
    swap(s[i],s[j]);

    }
    sscanf(s,"%lld",&a);
    cout<<a<<" - "<<b<<" = "<<a-b<<" = 9 * "<<(a-b)/9<<'\n';
    }

 return 0;
}

UVA 10110 - Light, more light

#include<bits/stdc++.h>
#define sf scanf
#define pf printf
#define LL long long
#define REP(i,MAX) for(LL i = 0; i<MAX; i++)
#define MAX 10000000+10
using namespace std;
int main()
{
    ios_base::sync_with_stdio(false);
    long long n;
    while(cin >> n && n){
    floor(sqrt(n)) == ceil(sqrt(n)) ? cout<<"yes\n":cout <<"no\n";
    }

 return 0;
}

Friday, November 4, 2016

UVA 10168 - Summation of Four Primes

#include<bits/stdc++.h>
#define sf scanf
#define pf printf
#define LL long long
#define REP(i,MAX) for(LL i = 0; i<MAX; i++)
#define MAX 10000000+10
using namespace std;
bool prime[MAX];
vector<LL>P;
void init_prime() {
  prime[2] = true;
  for (LL i = 3; i < MAX; i += 2) prime[i] = true;

  for (LL i = 3; i*i < MAX; i += 2)
    if (prime[i])
      for (LL j = i*i; j < MAX; j += i+i)
        prime[j] = false;
}

int main()
{
    ios_base::sync_with_stdio(false);
    init_prime();
   LL n;
   while(cin >> n){
    bool found = false;
    if(n < 8){
        cout << "Impossible.\n";
        continue;
    }
    if(n%2 != 0){
        cout <<"2 3 ";
        n-=5;
    }
    else{
        cout <<"2 2 ";
        n-=4;
    }
    if(n == 4){
        cout << "2 2 ";
    }
    else{
        for (int i = 3; i <=(n/2) ; i+=2)
        {
            if(prime[i] && prime[n-i]){
                cout << i <<' '<<n-i<<'\n';
                found = true;
                break;
            }
        }
    }
    if(!found) cout << "Impossible.\n";
   }

 return 0;
}

Thursday, November 3, 2016

UVA 10948 - The primary problem

#include<bits/stdc++.h>
#define sf scanf
#define pf printf
#define LL long long
#define REP(i,MAX) for(int i = 0; i<MAX; i++)
#define MAX 1000010
bool prime[MAX];
using namespace std;
void init_prime() {
  prime[2] = true;
  for (int i = 3; i < MAX; i += 2) prime[i] = true;

  for (int i = 3; i*i < MAX; i += 2)
    if (prime[i])
      for (int j = i*i; j < MAX; j += i+i)
        prime[j] = false;
}

int main()
{
    ios_base::sync_with_stdio(false);
    init_prime();
    int n;
    while(cin >> n && n){
        cout << n << ":\n";
        bool found = false;
        int i;
        for (i = 2; i <= n; ++i)
        {
            if(i > n-i)break;
            if(prime[i] && prime[n-i]){
                found = true;
                break;
            }
        }
        if(found)cout <<i<<'+'<<n-i<<'\n';
        else cout <<"NO WAY!\n";
    }


 return 0;
}

Tuesday, October 25, 2016

UVA 136 - Ugly Numbers

#include<bits/stdc++.h>
#define sf scanf
#define pf printf
#define LL long long
#define REP(i,MAX) for(int i = 0; i<MAX; i++)
#define MAX INT_MAX
using namespace std;
int main()
{
    ios_base::sync_with_stdio(false);
    puts("The 1500'th ugly number is 859963392.");

 return 0;
}

UVA 424 - Integer Inquiry

import java.util.*;
import java.math.BigInteger;

public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
BigInteger n , sum = BigInteger.valueOf(0);
while(sc.hasNext()){
n = sc.nextBigInteger();
sum = sum.add(n);
}
System.out.println(sum);
}

UVA 10140 - Prime Distance

#include<bits/stdc++.h>
#define sf scanf
#define pf printf
#define LL long long
#define REP(i,MAX) for(int i = 0; i<MAX; i++)
#define MAX INT_MAX
#define maxL (1000000>>5)+1
#define GET(x) (mark[x>>5]>>(x&31)&1)
#define SET(x) (mark[x>>5]|=1<<(x&31))
using namespace std;
int mark[maxL];
int p[700000], pt = 0;
void sieve() {
    register int i, j, k;
    SET(1);
    int n = 1000000;
    for(i = 2; i <= n; i++) {
        if(!GET(i)) {
            p[pt++] = i;
            for(k = n/i, j = i*k; k >= i; k--, j -= i)
                SET(j);
        }
    }
}
int isprime(int n) {
    if(n < 1000000)
        return !GET(n);
    static int sq, i;
    sq = (int)sqrt(n);
    for(i = 0; i < pt && p[i] <= sq; i++)
        if(n%p[i] == 0)
            return 0;
    return 1;
}
int main()
{
   ios_base::sync_with_stdio(false);
   sieve();
   int L , U;
   while(cin >> L >> U){
    int last = -1 ,x1,x2,x3,x4;
    int close = INT_MAX, dis = -close;
    bool used = false;
    for (LL i = L; i <= U; ++i)
    {
        if(isprime(i)){
            if(last == -1)last = i;
            else{
                if(i-last > dis){
                    dis = i-last;
                    x1 = last , x2 = i;
                }
                if(i-last < close){
                    close = i-last;
                    x3 = last, x4 = i;
                }
                last=i;
                used=true;
            }
        }
    }
    if(!used)cout <<"There are no adjacent primes.\n";
    else cout <<x3<<','<<x4<<" are closest, "<<x1<<','<<x2<<" are most distant.\n";
   }

 return 0;
}

Monday, October 24, 2016

UVA 10394 - Twin Primes

#include<bits/stdc++.h>
#define sf scanf
#define pf printf
#define LL long long
#define REP(i,MAX) for(int i = 0; i<MAX; i++)
#define MAX 20000010
using namespace std;
bool prime[MAX];
vector<int> P;
vector<int>TwinPrime;
void init_prime() {
  prime[2] = true;
  for (int i = 3; i < MAX; i += 2) prime[i] = true;

  for (int i = 3; i*i < MAX; i += 2)
    if (prime[i])
      for (int j = i*i; j < MAX; j += i+i)
        prime[j] = false;

  REP(i, MAX)if (prime[i]) P.push_back(i);
  for (int i = 0; i <P.size(); i++)
  {
      if(P[i+1]-P[i] == 2)TwinPrime.push_back(P[i]);
  }

}

int main()
{
   ios_base::sync_with_stdio(false);
   init_prime();
   int n;
  while(cin >> n){
    cout <<'('<<TwinPrime[n-1]<<", "<<TwinPrime[n-1]+2<<")\n";
   }
 return 0;
}

UVA 686 - Goldbach's Conjecture (II)

#include<bits/stdc++.h>
#define sf scanf
#define pf printf
#define LL long long
#define REP(i,MAX) for(int i = 0; i<MAX; i++)
#define MAX INT_MAX
using namespace std;
bool isPrime(int n)
{
    if(n == 1) return false;
    if(n == 2) return true;
    if(n%2==0) return false;
    int sqr = sqrt(n);

    for (int i = 3; i <= sqr; i+=2)
    {
        if(n%i == 0){

            return false;
        }
    }
    return true;
}

int main()
{
   ios_base::sync_with_stdio(false);
   int n;
   while(cin >> n && n){
    int cnt = 0;
    for(int i = n-1; i>=n/2; i--){
        if(isPrime(i)){
            int diff = n-i;
            if(isPrime(diff)){
                cnt++;
            }
        }
    }
    cout << cnt << '\n';
   }
 return 0;
}

Sunday, October 23, 2016

UVA 543 - Goldbach's Conjecture

#include<bits/stdc++.h>
#define sf scanf
#define pf printf
#define LL long long
#define REP(i,MAX) for(int i = 0; i<MAX; i++)
#define MAX INT_MAX
using namespace std;
bool isPrime(int n)
{
    if(n == 1) return false;
    if(n == 2) return true;
    if(n%2==0) return false;
    int sqr = sqrt(n);

    for (int i = 3; i <= sqr; i+=2)
    {
        if(n%i == 0){

            return false;
        }
    }
    return true;
}

int main()
{
   ios_base::sync_with_stdio(false);
   int n;
   while(cin >> n && n){
    int a=0 , b=0;
    for(int i = n-1; i>=n/2; i--){
        if(isPrime(i)){
            int diff = n-i;
            if(isPrime(diff)){
                a=min(i,diff);
                b=max(i,diff);
                break;
            }
        }
    }
    if(a && b)cout<<n << " = "<< a << " + " << b <<'\n';
    else cout << "Goldbach's conjecture is wrong.\n";
   }
 return 0;
}

UVA 11287 - Pseudoprime Numbers

#include<bits/stdc++.h>
#define sf scanf
#define pf printf
#define LL long long
#define REP(i,MAX) for(int i = 0; i<MAX; i++)
#define MAX 10001
using namespace std;
bool isPrime(LL n)
{
    if(n == 1) return false;
    if(n == 2) return true;
    LL sqr = sqrt(n);

    for (LL i = 2; i <= sqr; i++)
    {
        if(n%i == 0){

            return false;
        }
    }
    return true;
}
LL big_mod(LL base, LL power, LL mod)
{
    if(power==0)    return 1;
    else if(power%2==1)
    {
        LL p1 = base % mod;
        LL p2 = (big_mod(base,power-1,mod))%mod;
        return (p1*p2)%mod;
    }
    else if(power%2==0)
    {
        LL p1 = (big_mod(base,power/2,mod))%mod;
        return (p1*p1)%mod;
    }
}
int main()
{
   ios_base::sync_with_stdio(false);
  LL p   , a;
  while(cin >> p >> a &&p &&a){
  if(isPrime(p))cout << "no\n";
  else {
    LL mod = big_mod(a,p,p);
    if(a == mod)cout << "yes\n";
    else cout << "no\n";
  }
}

 return 0;
}

UVA 1210 - Sum of Consecutive Prime Numbers

#include<bits/stdc++.h>
#define sf scanf
#define pf printf
#define LL long long
using namespace std;
vector<int>prime;
bool isPrime(int n)
{
    if(n == 1) return false;
    if(n == 2) return true;
    int sqr = sqrt(n);

    for (int i = 2; i <= sqr; i++)
    {
        if(n%i == 0){

            return false;
        }
    }
    return true;
}
void primeGenerate(int n)
{
    if(isPrime(n))prime.push_back(n);
    if(n > 10000)return;
    n+=1;
    primeGenerate(n);
}
int main()
{
   ios_base::sync_with_stdio(false);
   primeGenerate(1);
   int cnt=0, val;
   while(cin >> val && val){
   bool equal = false;
   for (int i = 0; i < prime.size(); ++i)
   {
        int total = 0;
       for (int j = i; j < prime.size(); ++j)
       {
           total+=prime[j];
           if(total == val){
            cnt++;
           }
           if(total > val)break;
       }
       if(prime[i] > val)break;
   }
   cout << cnt << '\n';
   cnt = 0;
}

return 0;
}

UVA 11879 - Multiple of 17

#include<bits/stdc++.h>
#define sf scanf
#define pf printf
#define LL long long
using namespace std;
int main()
{
   ios_base::sync_with_stdio(false);
   string num="";
   while(cin >> num && num!="0"){
    int temp = 0;
    for (int i = 0; i < num.length(); ++i)
    {
        temp = temp*10 + num[i]-'0';
        temp%=17;
        //cout << temp << ' ';
    }
    temp == 0 ? cout<<1<<'\n':cout<<0<<'\n';
   }

return 0;
}

UVA 846 - Steps

#include<bits/stdc++.h>
#define sf scanf
#define pf printf
#define LL long long
using namespace std;
int main()
{
   ios_base::sync_with_stdio(false);
   LL T;
   cin >> T;
   while(T--){
    LL x , y;
    cin >> x >> y;
    LL diff = abs(x-y) , start = 1 , cnt = 0;
    bool flag = false;
    while(diff > 0){
        diff-=start;
        cnt++;
        if(flag)start++;
        flag=!flag;
    }
    cout << cnt << '\n';
   }

return 0;
}

Saturday, October 22, 2016

UVA 10469 - To Carry or not to Carry

#include<bits/stdc++.h>
#define printCase cout << "Case "<< ++kase<<":"
#define sf scanf
#define pf printf
#define FAST ios_base::sync_with_stdio(false)
using namespace std;

int main()
{
FAST;
unsigned long long a , b;
    while(cin >> a >> b){
        string s1 , s2 , total;
        s1 =bitset<32>(a).to_string();
        s2 =bitset<32>(b).to_string();

        for (int i = 0; i < s1.length(); ++i)
        {
            if(s1[i] == '1' && s2[i] !='1' ||s1[i] != '1' && s2[i] =='1' )
                total+='1';
            else
                total+='0';
        }
        unsigned long long num ;
        num = bitset<32>(total).to_ulong();
        cout << num << '\n';
    }
return 0;
}

Another solution


int main()
{
FAST;
unsigned long long a , b;
    while(cin >> a >> b){
     
        unsigned long long num ;
        num = a^b;
        cout << num << '\n';
    }
return 0;
}

UVA 11614 - Etruscan Warriors Never Play Chess

#include<bits/stdc++.h>
#define printCase cout << "Case "<< ++kase<<":"
#define sf scanf
#define pf printf
#define FAST ios_base::sync_with_stdio(false)
using namespace std;

int main()
{
//FAST;
double T , kase = 0;
    sf("%lf",&T);
    while(T--){
        double n;
        sf("%lf",&n);
        pf("%lld\n",(long long)(sqrt(1+8*n)-1)/2);

    }
return 0;
}

UVA 10281 - Average Speed

#include <bits/stdc++.h>
#define dbug(x) cout << '>' << #x << ':' << x << endl
#define dbg(x) cout << '>' << #x << ':' << x << " "

#define pline    cout << "_________________________" << endl
#define mem(x, v) memset(x, v, sizeof(x))

#define eef else if
#define sf scanf
#define pf printf
#define i64 long long
#define ll  long long
#define ull unsigned long long

#define all(x) x.begin(), x.end()
#define lla(x) x.rbegin(), x.rend()
#define SORT(c) sort(all(c))
#define ssort(v) stable_sort(v.begin(), v.end())
#define sz(v) (int)(v).size()

#define IT iterator
#define pb push_back
#define eb emplace_back
#define ppb pop_back
#define mp make_pair
#define fi first
#define se second
#define contains(T, x) (T.find(x) != T.end())

#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
#define max4(a,b,c,d) max(max(a,max(b,c)),d)

#define Reverse(x)  reverse(x.begin(),x.end())

#define loop(i,s,e) for(__typeof(s) i=(s);i<=(e);i++)
#define pool(i,e,s) for(__typeof(e) i=(e);i>=(s);i--)

#define FORIT(i, m) for (__typeof((m).begin()) i=(m).begin(); i!=(m).end(); ++i)

#define newl '\n'

//              12345678901234567890
#define MAX     1e5

#define Fast ios_base::sync_with_stdio(0)
using namespace std;

int main(){
    //Fast;
    char time[20]="";
    double speed = 0 , current = 0 , prev = 0 , dis;
    while(sf("%s",time)!=EOF){
    double h , m , s;
    char c;
    sscanf(time,"%lf:%lf:%lf",&h,&m,&s);
    current = (h*3600)+(m*60)+s;
    dis += (current - prev)*(speed/3600.0);
    c = getchar();
    c == ' ' ? sf("%lf",&speed):printf("%s %.2lf km\n",time,dis);
    prev = current;

    }
    return 0;
}

UVA 11723 - Numbering Roads

#include<bits/stdc++.h>
using namespace std;
int main()
{
   ios_base::sync_with_stdio(false);
   int r , n , kase = 0;
   while(cin >> r >> n &&r &&n){
    bool flg = false;
    for (int i = 1; i <= 27; ++i)
    {
        if(i*n >= r){
            cout << "Case "<<++kase<<": "<<i-1<<'\n';
            flg = true;
            break;
        }
    }
    if(!flg)cout << "Case "<<++kase<<": impossible\n";
   }

return 0;
}

UVA 12149 - Feynman

#include<bits/stdc++.h>
using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
   int n;
   while(cin >>n && n){
    int total = 0;
    for (int i = 2; i <= n; ++i)
    {
        total+=(i*i);
    }
    cout << total+1 << '\n';
   }

return 0;
}

Saturday, September 17, 2016

UVA 118 - Mutant Flatworld Explorers

#include<bits/stdc++.h>
using namespace std;
bool destination, flg[100][100];
int nx , ny, row , col;
char orientation;
void process(char x)
{
if(orientation == 'S' && x == 'R')orientation = 'W';
else if(orientation == 'S' && x == 'L')orientation = 'E';
else if(orientation == 'N' && x == 'R')orientation = 'E';
else if(orientation == 'N' && x == 'L')orientation = 'W';
else if(orientation == 'E' && x == 'R')orientation = 'S';
else if(orientation == 'E' && x == 'L')orientation = 'N';
else if(orientation == 'W' && x == 'R')orientation = 'N';
else if(orientation == 'W' && x == 'L')orientation = 'S';
if(x == 'F'){
switch(orientation){
case 'N':
if(row == ny && flg[nx][ny])break;
else if(row == ny && !flg[nx][ny]){
flg[nx][ny] = true;
cout<<nx<<' '<<ny<<' '<<orientation<<" LOST\n";
destination = true;
break;
}
ny++;
break;
case 'S':
if(ny == 0 && flg[nx][ny])break;
else if(ny == 0 && !flg[nx][ny]){
flg[nx][ny] = true;
cout<<nx<<' '<<ny<<' '<<orientation<<" LOST\n";
destination = true;
break;
}
ny--;
break;
case 'E':
if(col == nx && flg[nx][ny])break;
else if(col == nx && !flg[nx][ny]){
flg[nx][ny] = true;
cout<<nx<<' '<<ny<<' '<<orientation<<" LOST\n";
destination = true;
break;
}
nx++;
break;
case 'W':
if(nx == 0 && flg[nx][ny])break;
else if(nx == 0  && !flg[nx][ny]){
flg[nx][ny] = true;
cout<<nx<<' '<<ny<<' '<<orientation<<" LOST\n";
destination = true;
break;
}
nx--;

}
}
}

int main()
{
memset(flg,false,sizeof flg);
cin>>col>>row;
while(cin>>nx>>ny>>orientation){
char com[100];
cin>>com;
destination = false;
for(int i = 0; com[i] && !destination; i++){
process(com[i]);
}
if(!destination)cout<<nx<<' '<<ny<<' '<<orientation<<'\n';
}

return 0;
}

Wednesday, September 7, 2016

UVA 572 - Oil Deposits

#include<bits/stdc++.h>
using namespace std;
int m , n , cnt;
vector<string>v;
string s;
bool vis[100][100];
int nx[8] = {1,1,1,-1,-1,-1,0,0};
int ny[8] = {1,0,-1,1,0,-1,1,-1};
void dfs(int start , int end)
{
vis[start][end] = 1;
int row , col;
for(int i=0; i<8; i++){
row = start + nx[i];
col = end + ny[i];
if(row >=0 && row<m && col>=0 && col<n && !vis[row][col]){
vis[row][col] = 1;
if(v[row][col] == '@')dfs(row,col);
}
}
}

int main()
{
while(cin>>m>>n && m){
v.clear();
for(int i=0; i<m; i++){
cin>>s;
v.push_back(s);
}
        cnt = 0;
        memset(vis,0,sizeof(vis));
for(int i=0; i<m; i++){
for(int j=0; j<n; j++){
if(!vis[i][j]){
vis[i][j] = true;
if(v[i][j] == '@'){cnt++; dfs(i,j);}
}
}
}
cout<<cnt<<'\n';
}

return 0;
}

Monday, August 22, 2016

Uva 10004 - Bicoloring

#include<bits/stdc++.h>
using namespace std;
vector<int>adj[1000];
queue<int>q;
int color[1000] , visited[1000];
bool isBipertite(int s)
{
     memset(color,-1,sizeof(color));
     color[s] = 1;
    while(!q.empty())
    {
        q.pop();
    }
    int fr;
    q.push(s);
    memset(visited,0,sizeof(visited));
    visited[s] = 1;
    while(!q.empty()){
        fr = q.front();
        q.pop();
        for(int k=0; k<adj[fr].size(); k++){
            if(visited[adj[fr][k]]==0 && color[adj[fr][k]]==-1){
                 q.push(adj[fr][k]);
                visited[adj[fr][k]] = 1;
                color[adj[fr][k]] = 1 - color[fr];
            }
        }
        for(int i=0; i<adj[fr].size(); i++){
            if(visited[adj[fr][i]]==1 && color[adj[fr][i]] == color[fr]) return false;
        }
    }

   return true;
}
int main()
{
     int node  , e;
     while(cin>>node &&node){
        cin>>e;
        memset(adj,0,sizeof (adj));
        for(int i=0; i<e; i++){
            int u , v;
            cin>>u>>v;
            adj[u].push_back(v);
        }
        isBipertite(0) ? cout<<"BICOLORABLE.\n" : cout<<"NOT BICOLORABLE.\n";
     }

    return 0;
}

Thursday, August 4, 2016

UVA 12555 - Baby Me

#include <bits/stdc++.h>
#define FAST ios_base::sync_with_stdio(0)
using namespace std;
int main()
{
    FAST;
    double a , b , t,kase = 0;
    string s="";
    cin>>t;
    while(t--){
        cin>>a>>s;
        b = s.size() > 3 ?  s[3] - '0' : 0;
        cout << "Case " << ++kase << ": " << a * 0.5 + b * 0.05 << '\n';
    }
    return 0;
}

Sunday, July 31, 2016

UVA 401 - Palindromes

#include <bits/stdc++.h>
#define FAST ios_base::sync_with_stdio(0)
using namespace std;
int main()
{
    FAST;
    string t , s ;
    while(cin>>t){
        bool pal = false , mir = false;
         s = t;
        int last = t.size()-1;
        int len = t.size()-1;
        if(t.size() == 1){
         pal = true;
            if(s[0] == 'A' ) mir = true;
          //  else if(s[0] == 'E' ) mir = true;
           else if(s[0] == 'H' ) mir = true;
           else if(s[0] == 'I' ) mir = true;
          // else if(s[0] == 'J' ) mir = true;
         // else if(s[0] == 'L' ) mir = true;
           else if(s[0] == 'M' ) mir = true;
           else if(s[0] == 'O' ) mir = true;
         // else  if(s[0] == 'S' ) mir = true;
          else  if(s[0] == 'T' ) mir = true;
          else  if(s[0] == 'U' ) mir = true;
          else  if(s[0] == 'V' ) mir = true;
          else  if(s[0] == 'W' ) mir = true;
          else  if(s[0] == 'X' ) mir = true;
          else  if(s[0] == 'Y' ) mir = true;
          // else if(s[0] == 'Z' ) mir = true;
          else  if(s[0] == '1' ) mir = true;
          // else if(s[0] == '2' ) mir = true;
          // else if(s[0] == '3' ) mir = true;
         // else  if(s[0] == '5' ) mir = true;
           else if(s[0] == '8' ) mir = true;
          else mir = false;
        }
        else {
        reverse(t.begin() , t.end());
        if(s == t) pal = true;
        for(int i = 0; i < len ; i++){
            if(s[i] == 'A' && s[last] == 'A' ) mir = true;
          else  if(s[i] == 'E' && s[last] == '3' ) mir = true;
         else  if(s[i] == 'H' && s[last] == 'H' ) mir = true;
         else   if(s[i] == 'I' && s[last] == 'I' ) mir = true;
        else  if(s[i] == 'J' && s[last] == 'L' ) mir = true;
         else   if(s[i] == 'L' && s[last] == 'J') mir = true;
         else  if(s[i] == 'M' && s[last] == 'M') mir = true;
         else  if(s[i] == 'O' && s[last] == 'O' ) mir = true;
         else   if(s[i] == 'S' && s[last] == '2' ) mir = true;
         else if(s[i] == 'T' && s[last] == 'T' ) mir = true;
        else  if(s[i] == 'U' && s[last] == 'U' ) mir = true;
         else   if(s[i] == 'V' && s[last] == 'V' ) mir = true;
        else   if(s[i] == 'W' && s[last] == 'W' ) mir = true;
       else  if(s[i] == 'X' && s[last] == 'X' ) mir = true;
          else  if(s[i] == 'Y' && s[last] == 'Y') mir = true;
         else  if(s[i] == 'Z' && s[last] == '5' ) mir = true;
         else   if(s[i] == '1' && s[last] == '1' ) mir = true;
        else if(s[i] == '2' && s[last] == 'S' ) mir = true;
        else if(s[i] == '3' && s[last] == 'E' ) mir = true;
        else if(s[i] == '5' && s[last] == 'Z' ) mir = true;
          else if(s[i] == '8' && s[last] == '8') mir = true;
           else mir = false;
           if(mir == false) break;
         // if(i == last)break;
            last--;
        }
        }
        if(!pal && !mir)cout<<s<<" -- is not a palindrome.\n";
        else if(pal && !mir)cout<<s<<" -- is a regular palindrome.\n";
        else if(pal && mir)cout<<s<<" -- is a mirrored palindrome.\n";
        else if(!pal && mir)cout<<s<<" -- is a mirrored string.\n";
        cout<<"\n";
    }

    return 0;
}

Friday, July 29, 2016

UVA 11677 - Alarm Clock

#include <bits/stdc++.h>
#define FAST ios_base::sync_with_stdio(0)
using namespace std;
int main()
{
    FAST;
    int h1, m1, h2, m2;
    while(cin>>h1>>m1>>h2>>m2 ){
        if(!h1 && !m1 && !h2 && !m2)break;
        int start = h1*60 + m1;
        int ending = h2*60 + m2;
        if(start < ending)cout<<ending - start<<'\n';
        else if(start == ending )cout<<0<<'\n';
        else cout<<(24*60) - start + ending<<'\n';
    }
    return 0;
}

Wednesday, July 27, 2016

UVA 579 - Clock Hands

#include <bits/stdc++.h>
#define FAST ios_base::sync_with_stdio(0)
#define dbug(x) cout<<x<<" "
using namespace std;
int main()
{
    //FAST;
    int hour , minute ;
    double total , h_angle , m_angle;
    while(scanf("%d:%d",&hour,&minute)== 2){
        if(!hour  && !minute)break;
        m_angle = minute/5.0*30.0;
        h_angle = hour*30.0 + minute*30.0/60.0;
        total = fabs(h_angle - m_angle);
        if(total > 180.0 ) total = 360.0 - total;
        printf("%.3f\n",total);
    }
    return 0;
}

UVA 1121 - Subsequence

#include <bits/stdc++.h>
#define FAST ios_base::sync_with_stdio(0)
#define dbug(x) cout<<x<<" "
using namespace std;
int main()
{
    FAST;
    int  n , s;
    while(cin>>n>>s){
        long long a[n] ,sum = 0,low=0, ans = n+2;
        for(int i = 0; i < n; i++){
            cin>>a[i];
            sum+=a[i];
            while(sum>=s){
                ans=min(ans,i-low+1);
                sum-=a[low];
                low++;
            }
        }
        if(ans == n+2)ans = 0;
        cout<<ans<<'\n';
    }
    return 0;
}

UVA 10954 - Add All

#include <bits/stdc++.h>
#define FAST ios_base::sync_with_stdio(0)
#define dbug(x) cout<<x<<" "
using namespace std;
int main()
{
    FAST;
    int t;
    while(cin>> t && t){
        priority_queue<int ,vector<int>, greater<int> >pq;
        int sum=0 , cost=0;
        for(int i=0; i<t; i++){
            int x;
            cin>>x;
            pq.push(x);
        }
        if(t==1){cout<<pq.top();continue;}
        for(int i=1; i<t; i++){
                int x=pq.top();
                pq.pop();
                x+=pq.top();
                sum+=x;
                pq.pop();
                pq.push(x);
        }
        cout<<sum<<'\n';
    }
    return 0;
}

Sunday, July 24, 2016

UVA 541 - Error Correction

#include <bits/stdc++.h>
#define FAST ios_base::sync_with_stdio(0)
using namespace std;
int main()
{
    FAST;
    vector<int>v;
    int x;
    while(cin>>x){
        v.push_back(x);
        sort(v.begin(),v.end());
        if(v.size()%2==0) cout<<(v[(v.size()+1)/2-1]+v[(v.size()+1)/2])/2<<'\n';
        else cout<<v[(v.size()+1)/2-1]<<'\n';
    }
    return 0;
}

UVA 11858 - Frosh Week

#include <bits/stdc++.h>
#define FAST ios_base::sync_with_stdio(0)
using namespace std;
int num[1048576], temp[1048576];
long long cnt;
void mergesort(int low , int high)
{
    if(low==high) return;
    int mid=(low+high)/2;
    mergesort(low,mid);
    mergesort(mid+1,high);
    int i , j , k;
    long long add=0;
    for(int i=low , j=mid+1 , k=low; k<=high; k++){
        if(i==mid+1)temp[k]=num[j++];
        else if(j==high+1){
                temp[k]=num[i++];
                cnt+=add;
        }
        else if(num[i]<=num[j]){
                temp[k]=num[i++];
                cnt+=add;
        }
        else{
            temp[k]=num[j++];
            add++;
        }
    }
    for(int k=low; k<=high; k++)num[k]=temp[k];
}
int main()
{
    FAST;
    long long n;
    while(cin>>n){
    cnt=0;
    for(int i=0; i<n; i++)cin>>num[i];
    mergesort(0,n-1);
   // for(int i=0; i<n; i++)cout<<num[i]<<" ";
    cout<<cnt<<'\n';
    }
    return 0;
}

Thursday, June 30, 2016

UVA 195 - Anagram

#include<bits/stdc++.h>
using namespace std;
bool compare(char a , char b)
{
    if(tolower(a)==tolower(b)) return a < b;
    return tolower(a) < tolower(b);
}
int main()
{
    int t;
    cin>>t;
    while(t--){
        string s;
        cin>>s;
        sort(s.begin(),s.end(),compare);
        cout<<s<<'\n';
        while(next_permutation(s.begin(),s.end(),compare))cout<<s<<'\n';
    }

    return 0;
}

Tuesday, June 28, 2016

UVA 11661 - Burger Time?

#include<bits/stdc++.h>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(0);
    int t;
    while(cin>>t && t!=0){
        cin.ignore();
        string s;
        int mid=t,startD=-t, startR=-t;
        cin>>s;
        for(int i=0; i<t; i++){
            if(s[i]=='Z'){
                mid=0;
                break;
            }
            if(s[i]=='D'){
                startD=i;
                mid = min(mid,i- startR);
            }
            if(s[i]=='R'){
                 startR=i;
                mid = min(mid,i- startD);
            }
        }
        cout<<mid<<'\n';
    }


    return 0;
}

UVA 10062 - Tell me the frequencies!

#include<bits/stdc++.h>
using namespace std;
struct freq{
    int asci=0, fr=0;
};
bool comp(freq a , freq b)
{
    if(a.fr==b.fr) return a.asci > b.asci;
    return a.fr < b.fr;
}
int main()
{
    ios_base::sync_with_stdio(0);
    string s;
    int flag=0;
    while(getline(cin,s)){
        flag++;
        int a[256],j=0;
        freq cnt[256];
        memset(a,0,sizeof(a));
        for(int i=0; i<s.size(); i++){
            int x = s[i];
            a[x]++;
        }
        for(int i=0; i<256; i++){
            if(a[i]!=0){
                cnt[j].asci=i;
                cnt[j].fr=a[i];
                j++;
            }
        }
        if(flag!=1) cout<<'\n';
        sort(cnt , cnt+j,comp);
        for(int i=0; i<j; i++){
            cout<<cnt[i].asci<<' '<<cnt[i].fr;
                cout<<'\n';
        }
    }

    return 0;
}

Friday, June 24, 2016

UVA 12157 - Tariff Plan

#include<bits/stdc++.h>
using namespace std;
int mile(int dur)
{
    int sum=0;
    while(dur>=0){
        sum+=10;
        dur-=30;
    }
    return sum;
}
int juice(int dur)
{
    int sum=0;
    while(dur>=0){
        sum+=15;
        dur-=60;
    }
    return sum;
}
int main()
{
    ios_base::sync_with_stdio(0);
    int T,kase=0;
    cin>>T;
    while(T--){
        int t,dur,m=0,j=0;
        cin>>t;
        while(t--){
            cin>>dur;
            m+=mile(dur);
            j+=juice(dur);
        }
        if(m>j)cout<<"Case "<<++kase<<": Juice "<<j<<'\n';
        else if(j>m)cout<<"Case "<<++kase<<": Mile "<<m<<'\n';
        else cout<<"Case "<<++kase<<": Mile Juice "<<m<<'\n';
    }

    return 0;
}

UVA 11364 - Parking

#include<bits/stdc++.h>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(0);
    int T;
    cin>>T;
    while(T--){
        int t , x,mx=0,mn=99;
        cin>>t;
        while(t--){
            cin>>x;
            if(x>mx)mx=x;
            if(x<mn)mn=x;
        }
        cout<<(mx-mn)*2<<'\n';
    }
    return 0;
}

Wednesday, June 22, 2016

UVA 12503 - Robot Instructions

#include<bits/stdc++.h>
using namespace std;
int main()
{
   int T;
   cin>>T;
   while(T--){
    int t;
    cin>>t;
    cin.ignore();
    vector<int>v;
    string s;
    int pos=0,line=0;
    while(t--){
        cin>>s;
        if(s=="LEFT"){
            pos--;
            v.push_back(-1);
        }
        else if(s=="RIGHT"){
            pos++;
            v.push_back(1);
        }
        else{
            string t ;
            int ins;
            cin>>t>>ins;
            pos+=v[ins-1];
            v.push_back(v[ins-1]);
        }
    }
     cout<<pos<<'\n';
   }
    return 0;
}

Tuesday, June 21, 2016

UVA 10324 - Zeros and Ones

#include <bits/stdc++.h>
#define dbug(x) cout << '>' << #x << ':' << x << endl
#define dbg(x) cout << '>' << #x << ':' << x << " "

#define pline    cout << "_________________________" << endl
#define mem(x, v) memset(x, v, sizeof(x))


#define eef else if
#define sf scanf
#define pf printf
#define i64 long long
#define ll  long long
#define ui64 unsigned long long

#define pcount(num)  __builtin_popcount(num)
#define all(x) x.begin(), x.end()
#define lla(x) x.rbegin(), x.rend()
#define SORT(c) sort(all(c))
#define ssort(v) stable_sort(v.begin(), v.end())
#define sz(v) (int)(v).size()
#define _lst(X) (X)[sz((X))-1]

#define IT iterator
#define pb push_back
#define ppb pop_back
#define mp make_pair
#define fi first
#define se second
#define CTN(T, x) (T.find(x) != T.end())

#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
#define max4(a,b,c,d) max(max(a,max(b,c)),d)
#define maximum(v)  *max_element(all(v))
#define minimum(v)  *min_element(all(v))
#define Reverse(x)  reverse(x.begin(),x.end())

#define loop(i,s,e) for(__typeof(s) i=(s);i<=(e);i++)
#define pool(i,e,s) for(__typeof(e) i=(e);i>=(s);i--)

#define FORIT(i, m) for (__typeof((m).begin()) i=(m).begin(); i!=(m).end(); ++i)

#define ps(x) cout<<"Case "<<++x<<": "
#define pcs(x) pf("Case %d: ", ++x)
#define newl '\n'
#define Newl "\n"
#define nl puts ("")
#define sqr(a) ((a)*(a))
#define MAX 1e12
#define intmax 2147483647
#define FAST ios_base::sync_with_stdio(0)
using namespace std;

int main(){
    FAST;
    string s="";
    int kase=0;
    while(getline(cin,s,'\n')){
        if(s[0]=='\0') break;
        int t , mn,mx;
        cin>>t;
        cout<<"Case "<<++kase<<":\n";
        while(t--){
            cin>>mn>>mx;
            if(mn>mx)swap(mn,mx);
            char comp = s[mn];
            bool flag=false;
            for(int i=mn+1; i<=mx; i++){
                if(s[i]!=comp){
                    flag=true;
                    break;
                }
            }
            if(flag)cout<<"No\n";
            else cout<<"Yes\n";
        }
        cin.ignore();
    }
    return 0;
}

UVA 1185 - Big Number

#include<bits/stdc++.h>
using namespace std;
double digit(int x)
{
    double sum=0;
    for(int i=1; i<=x; i++)
        sum+=log10(i);
    return sum;
}
int main()
{
    int x , t;
    cin>>t;
    while(t--){
        cin>>x;
        cout<<(int)(digit(x))+1<<'\n';
    }
    return 0;
}

Saturday, June 11, 2016

UVA 10696 - f91

#include<bits/stdc++.h>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(0);
    long long num;
    while(cin>>num){
        if(num==0)break;
        if(num>=101) cout<<"f91("<<num<<") = "<<num-10<<"\n";
        else cout<<"f91("<<num<<") = "<<91<<"\n";
    }
    return 0;
}

UVA 591 - Box of Bricks

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t,kase=0;
    while(cin>>t){

        if(t==0){  break;}
        int a[t],sum=0,cnt=0;
        for(int i=0; i<t; i++){
            cin>>a[i];
            sum+=a[i];
        }
        for(int i=0; i<t; i++){
            if(a[i]>(sum/t))cnt+=a[i]-(sum/t);
        }
        cout<<"Set #"<<++kase<<"\nThe minimum number of moves is "<<cnt<<".\n\n";
    }

    return 0;
}

Friday, June 10, 2016

UVA 11936 - The Lazy Lumberjacks

#include<bits/stdc++.h>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(false);
   int a , b , c, t;
   cin>>t;
   while(t--){
        cin>>a>>b>>c;
        if((a+b>c) &&(b+c>a) &&(a+c>b)) cout<<"OK\n";
        else cout<<"Wrong!!\n";
   }
    return 0;
}

Thursday, June 9, 2016

UVA 10323 - Factorial! You Must be Kidding!!!

#include<bits/stdc++.h>
#define newl cout<<"\n"
long long dp[100000000];
long long fact(int n)
{
    if(n==0)return 1;
    if(n==1)return 1;
    if(dp[n]!=0)return dp[n];
    else{
        dp[n]=n*fact(n-1);
        return dp[n];
    }
}
using namespace std;
int main()
{
    int n;
    memset(dp,0,sizeof(dp));
    while(cin>>n){
       // cout<<fact(n)<<" ";
        if(n>=14 || (n<0 && n%2!=0))cout<<"Overflow!";
        else if(n>=0 && n<=7 ||(n<0 && n%2==0))cout<<"Underflow!";
        else cout<<fact(n);
        newl;
    }
    return 0;
}

Friday, May 27, 2016

UVA 10970 - Big Chocolate

#include <bits/stdc++.h>
#define dbug(x) cout << '>' << #x << ':' << x << endl
#define dbg(x) cout << '>' << #x << ':' << x << " "

#define pline    cout << "_________________________" << endl
#define mem(x, v) memset(x, v, sizeof(x))


#define eef else if
#define sf scanf
#define pf printf
#define i64 long long
#define ll  long long
#define ui64 unsigned long long

#define pcount(num)  __builtin_popcount(num)
#define all(x) x.begin(), x.end()
#define lla(x) x.rbegin(), x.rend()
#define SORT(c) sort(all(c))
#define ssort(v) stable_sort(v.begin(), v.end())
#define sz(v) (int)(v).size()
#define _lst(X) (X)[sz((X))-1]

#define IT iterator
#define pb push_back
#define ppb pop_back
#define mp make_pair
#define fi first
#define se second
#define CTN(T, x) (T.find(x) != T.end())

#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
#define max4(a,b,c,d) max(max(a,max(b,c)),d)
#define maximum(v)  *max_element(all(v))
#define minimum(v)  *min_element(all(v))
#define Reverse(x)  reverse(x.begin(),x.end())

#define loop(i,s,e) for(__typeof(s) i=(s);i<=(e);i++)
#define pool(i,e,s) for(__typeof(e) i=(e);i>=(s);i--)

#define FORIT(i, m) for (__typeof((m).begin()) i=(m).begin(); i!=(m).end(); ++i)

#define ps(x) cout<<"Case "<<++x<<": "
#define pcs(x) pf("Case %d: ", ++x)
#define newl '\n'
#define Newl "\n"
#define nl puts ("")
#define sqr(a) ((a)*(a))
#define MAX 1e12
#define intmax 2147483647

#define FAST ios_base::sync_with_stdio(0)
using namespace std;

int main(){
    FAST;
    i64  m,n ;
    while(cin>>m>>n){
        cout<<(m*n)-1<<newl;
    }
    return 0;
}

Sunday, May 1, 2016

Codeforces 499B - Lecture

#include<bits/stdc++.h>
#define i64 long long
#define mx(a,b,c) max(a,max(b,c))
#define mn(a,b,c) min(a,min(b,c))
#define eef else if
#define ff(i,s,e) for(int i=(s); i<e; i++)
#define ff2(i,s,e) for(int i=(s); i>=e; i--)
#define sf scanf
#define pf printf
#define dbug(x) cout<<"x = "<<x<<endl
#define newl cout<<"\n"
#define putcase cout<<"Case "<<++cse<<":"
#define putcase2 cout<<"Case #"<<++cse<<":"
using namespace std;
int main()
{
   vector<string>vs1;
   vector<string>vs2;
   int m , n;
   string a , b;
   cin>>n>>m;
   string mn[n];
   ff(i,0,m){
    string a , b;
    cin>>a>>b;
    vs1.push_back(a);
    vs2.push_back(b);
   }
   ff(i,0,n){
    cin>>mn[i];
   }
   ff(i,0,n){
    ff(j,0,m){
        if(mn[i]==vs1[j]){
            if(vs1[j].size()>vs2[j].size())
                cout<<vs2[j];
            else
                cout<<vs1[j];
            if(i!=n-1)
                cout<<" ";
            break;
        }
    }
   }

    return 0;
}

Codeforces 112A - Petya and Strings

#include<bits/stdc++.h>
#define i64 long long
#define mx(a,b,c) max(a,max(b,c))
#define mn(a,b,c) min(a,min(b,c))
#define eef else if
#define ff(i,s,e) for(int i=(s); i<e; i++)
#define ff2(i,s,e) for(int i=(s); i>=e; i--)
#define sf scanf
#define pf printf
#define dbug(x) cout<<"x = "<<x<<endl
#define newl cout<<"\n"
#define putcase cout<<"Case "<<++cse<<":"
#define putcase2 cout<<"Case #"<<++cse<<":"
using namespace std;
int main()
{
    string s;
    while(getline(cin,s)){
        transform(s.begin(),s.end(),s.begin(),::tolower);
        string t;
        getline(cin,t);
        transform(t.begin(),t.end(),t.begin(),::tolower);
        if(s==t)
            cout<<"0"<<endl;
        else if(s<t)
            cout<<"-1"<<endl;
        else if(s>t)
             cout<<"1"<<endl;
    }

    return 0;
}

Codeforces 230B - T-primes

#include<bits/stdc++.h>
using namespace std;
bool isPrime(long long n)
{
    int skip=0;
    if(n<2)
        return false;
    else if(n==2)
        return true;
    long long limit=sqrt(n);
    if(n%2==0)
        return false;
        for(int j=3; j<=limit; j+=2){
            if(n%j==0)
                return false;
            }
    return true;
}
int main()
{
    long long num;
    int t;
    cin>>t;
    for(int i=0; i<t; i++){
        cin>>num;
        long long sqr=sqrt(num);
        if(sqr*sqr==num&&isPrime(sqr)==true)
            cout<<"YES\n";
        else
            cout<<"NO\n";
    }

    return 0;
}

Codeforces 118B - Present from Lena

#include<bits/stdc++.h>
#define i64 long long
#define mx(a,b,c) max(a,max(b,c))
#define mn(a,b,c) min(a,min(b,c))
#define eef else if
#define ff(i,s,e) for(int i=(s); i<e; i++)
#define ff2(i,s,e) for(int i=(s); i>=e; i--)
#define sf scanf
#define pf printf
#define dbug(x) cout<<"x = "<<x<<endl
#define newl cout<<"\n"
#define putcase cout<<"Case "<<++cse<<":"
#define putcase2 cout<<"Case #"<<++cse<<":"
using namespace std;
int loop(int n , int limit)
{
    int temp;

    for(int j=0; j<=limit; j++){
        for(int k=n*2; k>0; k--){
            cout<<" ";
        }
        for(int l=0; l<=j; l++){

            if(l!=0)
                cout<<" ";
            cout<<l;
            temp=l;
        }
        for(int m=temp-1; m>=0; m--){
                cout<<" ";
                  cout<<m;
        }
          n--;
        cout<<endl;
    }
}
int pool(int n , int limit)
{
    int temp=limit-1 , var;
    for(int j=0; j<=limit; j++){
        for(int k=0; k<=j*2; k++)
            cout<<" ";
         for(int l=0; l<=temp; l++){

                cout<<" ";
                   cout<<l;
            var=l;
    }
    for(int m=var-1; m>=0; m--)
            cout<<" "<<m;
        temp--;
    if(j!=limit)
        cout<<endl;
    }

}
int main()
{
    int n;
    while(cin>>n){
        loop(n,n);
        pool(n,n);
    }


    return 0;
}