Friday, April 25, 2014

Pasha and Hamster [codeforces.com, Problem A, Div 2] [C++]

A. Pasha and Hamsters
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Pasha has two hamsters: Arthur and Alexander. Pasha put n apples in front of them. Pasha knows which apples Arthur likes. Similarly, Pasha knows which apples Alexander likes. Pasha doesn't want any conflict between the hamsters (as they may like the same apple), so he decided to distribute the apples between the hamsters on his own. He is going to give some apples to Arthur and some apples to Alexander. It doesn't matter how many apples each hamster gets but it is important that each hamster gets only the apples he likes. It is possible that somebody doesn't get any apples.
Help Pasha distribute all the apples between the hamsters. Note that Pasha wants to distribute all the apples, not just some of them.
Input
The first line contains integers nab (1 ≤ n ≤ 100; 1 ≤ a, b ≤ n) — the number of apples Pasha has, the number of apples Arthur likes and the number of apples Alexander likes, correspondingly.
The next line contains a distinct integers — the numbers of the apples Arthur likes. The next line contains b distinct integers — the numbers of the apples Alexander likes.
Assume that the apples are numbered from 1 to n. The input is such that the answer exists.
Output
Print n characters, each of them equals either 1 or 2. If the i-h character equals 1, then the i-th apple should be given to Arthur, otherwise it should be given to Alexander. If there are multiple correct answers, you are allowed to print any of them.
Sample test(s)

input
4 2 3
1 2
2 3 4
output
1 1 2 2
input
5 5 2
3 4 1 2 5
2 3
output
1 1 1 1 1


My Solution (C++):

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int n=0; //no of apples
    cin>>n;
    int a=0; //no of apples arthur likes
    cin>>a;
    int b=0;    //no of apples alexander likes
    cin>>b;

    vector<int> aLikes;
    vector<int> bLikes;
    int *apples = new int[n+1];

    for(int i =1;i<=n;++i)
    apples[i]=0;

    int get=0;
    for(int i =0;i<a;++i){
        cin>>get;
        aLikes.push_back(get);
    }
    for(int i=0;i<b;++i){
        cin>>get;
        bLikes.push_back(get);
    }

    for(int i =1;i<=n;++i){
        for(auto &it:aLikes){
            if(it == i){
                cout<<"1 ";
                apples[i]=1;
                break;
            }
        }

        for(auto &it:bLikes){
            if(it == i && apples[i]!=1){
                cout<<"2 ";
                apples[i]=1;
                break;
            }
        }
    }
    return 0;
}

No comments:

Post a Comment