Showing posts with label UVA. Show all posts
Showing posts with label UVA. Show all posts

Tuesday, July 28, 2015

11831 - Sticker Collector Robot

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <cctype>
#include <stack>
#include <queue>
#include <list>
#include <vector>
#include <map>
#include <sstream>
#include <cmath>
#include <bitset>
#include <utility>
#include <set>
#include <numeric>
using namespace std;

typedef vector<int> vi;
typedef pair<int,int> ii;
typedef vector<ii> vii;

int main()
{
    freopen("11831 - Sticker Collector Robot.txt","r", stdin);
    int n,m,s,i,j,si,sj,c;
    while(scanf("%d %d %d", &n, &m, &s) && (n || m || s))
    {
        char cell[110][110],d;
        string instruct;
        for(i=0; i<n; i++)
            cin >> cell[i];
        bool flag = false;
        for(i=0; i<n; i++)
        {
            for(j=0; j<m; j++)
                if(cell[i][j] == 'N' || cell[i][j] == 'S' || cell[i][j] == 'L' || cell[i][j] == 'O')
                {
                    si=i;
                    sj=j;
                    d = cell[i][j];
                    flag = true;
                    break;
                }
            if(flag)
                break;
        }
        cin >> instruct;
        c = 0;
        for(i=0; i<s; i++)
        {
            if(instruct[i] == 'D')
            {
                if(d == 'N')
                    d = 'L';
                else if(d == 'S')
                    d = 'O';
                else if(d == 'L')
                    d = 'S';
                else if(d == 'O')
                    d = 'N';
            }
            else if(instruct[i] == 'E')
            {
                if(d == 'N')
                    d = 'O';
                else if(d == 'S')
                    d = 'L';
                else if(d == 'L')
                    d = 'N';
                else if(d == 'O')
                    d = 'S';
            }
            else
            {
                if(d == 'N' && si != 0)
                {
                    if(cell[si-1][sj] != '#')
                        si--;
                    if(cell[si][sj] == '*')
                    {
                        c++;
                        cell[si][sj] = '.';
                    }
                }
                else if(d == 'S' && si != n-1)
                {
                    if(cell[si+1][sj] != '#')
                        si++;
                    if(cell[si][sj] == '*')
                    {
                        c++;
                        cell[si][sj] = '.';
                    }
                }
                else if(d == 'L' && sj != m-1)
                {
                    if(cell[si][sj+1] != '#')
                        sj++;
                    if(cell[si][sj] == '*')
                    {
                        c++;
                        cell[si][sj] = '.';
                    }
                }
                if(d == 'O' && sj != 0)
                {
                    if(cell[si][sj-1] != '#')
                        sj--;
                    if(cell[si][sj] == '*')
                    {
                        c++;
                        cell[si][sj] = '.';
                    }
                }
            }
        }
        printf("%d\n",c);
    }
    return 0;
}

146 - ID Codes

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

int main()
{
    string s;
    while(cin >> s)
    {
        if(s == "#")
            break;
        if(next_permutation(s.begin(),s.end()))
            cout << s << endl;
        else
            cout << "No Successor" << endl;
    }
    return 0;
}

Monday, August 25, 2014

12157 Tarif Plan

#include<iostream>
using namespace std;

int main()
{
    int T,N,a,Mile,Juice,c=1;
    cin >> T;
    while(T--)
    {
        Mile = 0;
        Juice = 0;
        cin >> N;
        while(N--)
        {
            cin >> a;
            if((a+1)%30==0)
                Mile+=(a+1)/30*10;
            else
                Mile+=((a+1)/30+1)*10;
            if((a+1)%60==0)
                Juice+=(a+1)/60*15;
            else
                Juice+=((a+1)/60+1)*15;
        }
        if(Mile<Juice)
            cout << "Case " << c++ << ": Mile " << Mile;
        else if(Juice<Mile)
            cout << "Case " << c++ << ": Juice " << Juice;
        else
            cout << "Case " << c++ << ": Mile Juice " << Mile;

        cout << "\n";
    }
    return 0;
}

12289 - One-Two-Three

#include<iostream>
#include<string>

using namespace std;

int main()
{
    int n;
    string letter;
    cin >> n;
    while(n--)
    {
        cin >> letter;
        if(letter.length()==5)
            cout << 3;
        else if((letter[0]=='o'&&letter[1]=='n')||(letter[1]=='n'&&letter[2]=='e')||(letter[0]=='o'&&letter[2]=='e'))
            cout << 1;
        else
            cout << 2;
        cout << "\n";
    }
    return 0;
}

Tuesday, May 27, 2014

10189 - Minesweeper

#include <iostream>
using namespace std;
int main()
{
    int m,n,i,j,c,a=1;
    cin >> m >> n;
    while(1)
    {
        if(m==0 && n==0)
            break;
        char str[m+1][n+1];
        for(i=1; i<=m; i++)
            for(j=1; j<=n; j++)
                cin >> str[i][j];
        cout << "Field #" << a++ <<":\n";
        for(i=1; i<=m; i++)
        {
            for(j=1; j<=n; j++)
            {
                if(str[i][j]=='*')
                {
                    cout << "*";
                    continue;
                }
                c=0;
                if(i-1>0 && j-1>0)
                    if(str[i-1][j-1]== '*')
                        c++;
                if(i-1>0)
                    if(str[i-1][j]== '*')
                        c++;
                if(i-1>0 && j+1<=n)
                    if(str[i-1][j+1]== '*')
                        c++;
                if(j-1>0)
                    if(str[i][j-1]== '*')
                        c++;
                if(j+1<=n)
                    if(str[i][j+1]== '*')
                        c++;
                if(i+1<=m && j-1>0)
                    if(str[i+1][j-1]== '*')
                        c++;
                if(i+1<=m )
                    if(str[i+1][j]== '*')
                        c++;
                if(i+1<= m && j+1<=n)
                    if(str[i+1][j+1]== '*')
                        c++;
                cout << c ;
            }
            cout << endl;
        }
        cin >> m >> n;
        if(m!=0 && n!=0)
            cout << endl;
    }
    return 0;
}

10035 - Primary Arithmetic

#include <cstdio>
using namespace std;
int main()
{
    unsigned long int m,n;
    int c,d;
    while(1)
    {
        scanf("%lu%lu",&m,&n);
        if(m==0&&n==0)
            break;
        c=0;
        d=0;
        while(1)
        {
            if((m%10+n%10+d) >= 10)
            {
                c++;
                d=1;
            }
            else
                d=0;
            m/=10;
            n/=10;
            if(m<10&&n<10)
            {
                if((m+n+d) >= 10)
                    c++;
                break;
            }
        }
        if(c==0)
            printf("No carry operation.");
        else if(c==1)
            printf("1 carry operation.");
        else
            printf("%d carry operations.",c);
        printf("\n");
    }
    return 0;
}

Triathlon

Triathlon - CodeChef # include < bits/stdc++.h > using namespace std ; # define fi first # define se second # define mp ...