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;
}