Codeforces Beta Round #31 (Div. 2, Codeforces format)

Los ejercicios se encuentran aqui y pueden hacer la prueba con sus propias soluciones.

A continuación están mis soluciones en c++.

Ejercicio A. Worms Evolution:

int main() {
    int n;
    scanf("%d", &n);
    vector<int> v(n);
    for(int i=0; i<n ;i++)
        scanf("%d", &v[i]);
    for(int i=0; i<n ;i++){
        for(int j=0; j<n ;j++){
            for(int k=0; k<n ;k++){
                if(k == j) continue;
                if(v[i] == v[j]+v[k]){
                    printf("%d %d %dn", i+1, j+1, k+1);
                    return 0;
                }
            }
        }
    }
    printf("-1n");
}

Ejercicio B. Sysadmin Bob:

vector<string> v;
string sub(int j, int i, string s){
    string r = "";
    if(i >= s.size())
        i = s.size()-1;
    while(j <= i){
        r += s[j];
        j++;
    }
    return r;
}
bool solve(string s){
    int n = s.size(), j=0, c = -1;
    if(s.size() < 3) return false;
    for(int i=0; i<n ;i++){
        if(s[i] == '@')
            c++;
    }
    for(int i=0; i<n ;i++){
        if(s[i] == '@'){
            if(j >= i)   return false;
            if(i+1 >= n) return false;
            if(c){
                v.PB(sub(j, i+1, s));
                c--;
            }
            else{
                v.push_back(sub(j, n, s));
                return true;
            }
            j = i+2;
        }
    }
    return false;
}

int main() {
    string s;
    cin>>s;
    bool ok = solve(s);
    if(ok){
        int n = v.size();
        cout<<v[0];
        for(int i=1; i<n ;i++)
            cout<<","<<v[i];
        cout<<endl;
    }
    else{
        printf("No solutionn");
    }
}

Ejercicio C. Schedule:

#define x    first
#define y    second
bool chocaran(int x1, int y1, int x2, int y2) {
    if (y1 > x2 && x1 < y2)
        return true;
    if (y2 > x1 && x2 < y1)
        return true;
    if (x1 < y2 && y1 > x2)
        return true;
    if (x2 < y1 && y2 > x1)
        return true;
    return false;
}
int main() {
    int n;
    scanf("%d", &n);
    vector<pair<int,int> > v(n);
    for(int i=0; i<n ;i++) {
        scanf("%d %d", &v[i].x, &v[i].y);
    }
    vector<bool> choca(n, false);
    vector<int> vaux;
    int par = 0, ipar = -1, uno = 0;
    for(int i=0; i<n ;i++) {
        bool flag = false;
        for(int j=0; j<n ;j++) {
            if (i == j) continue;
            if(chocaran(v[i].x, v[i].y, v[j].x, v[j].y)){
                if(choca[i])
                    flag = true;
                choca[i] = true;
            }
        }
        if(flag){
            par++;
            ipar = i+1;
        }
        if(choca[i]){
            uno++;
            vaux.PB(i+1);
        }
    }
    if(par == 1){
        printf("1n%dn", ipar);
    }
    else if(par == 0 && uno == 2){
        printf("2n%d", vaux[0]);
 printf(" %dn", vaux[1]);
    }
    else if(uno == 0){
        printf("%dn1", n);
        for(int i=2; i<=n ;i++)
            printf(" %d", i);
        printf("n");
    }
    else {
        printf("0n");
    }
}

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s