Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2020-05-30 05:31:06.
Revizia anterioară   Revizia următoare  

Template C++

#include <iostream>
#include <vector>
#include <string>

using namespace std;

// Afla raspunsul la interactiune daca ar trimite sirurile de caractere A si B de marime N
// A si B trebuie indexate de la 0 si sa fie de marime cel putin N
int query(string A, string B);

// De aici in sus nu ar trebui sa modifici nimic

// Functia trebuie sa returneze permutarea ceruta
// Permutarea aici in implementare va fi indexata de la 0
vector<int> find_permutation(int N) {
    vector<int> perm;
    for(int i = 1; i <= N; ++i)
        perm.push_back(i);
    
    return perm;
}

// De aici in jos nu ar trebui sa modifici nimic

int query(string A, string B) {
    int val;
    cout << "? " << A << " " << B << endl;

    cin >> val;
    if(val == -1)
        exit(0);
    return val;
}

int main() {
    int T;

    cin >> T;
    
    while(T--) {
        int N;
        cin >> N;
        vector<int> perm = find_permutation(N);
        
        cout << "! ";
        for(auto it: perm)
            cout << it << " ";
        cout << endl;
    }

    return 0;
}

Template C

#include <stdio.h>
#include <stdlib.h>

// Afla raspunsul la interactiune daca ar trimite sirurile de caractere A si B de marime N
// N trebuie sa fie cel pe care il primesti in find_permutation
// A si B trebuie indexate de la 0 si sa fie de marime cel putin N
int query(char* A, char* B, int N);

// De aici in sus nu ar trebui sa modifici nimic

int rezperm[200];

// Functia trebuie sa returneze permutarea ceruta
// Permutarea aici in implementare va fi indexata de la 0
int* find_permutation(int N) {
    int i;
    
    for(i = 0; i < N; ++i)
        rezperm[i] = i + 1;
    
    return rezperm;
}

// De aici in jos nu ar trebui sa modifici nimic

int query(char* A, char* B, int N) {
    int i, val;

    fputc('?', stdout);
    for(i = 0; i < N; ++i)
        fputc(A[i], stdout);
    fputc(' ', stdout);

    for(i = 0; i < N; ++i)
        fputc(B[i], stdout);
    fputc('\n', stdout);

    fflush(stdout);

    scanf("%d", &val);
    if(val == -1)
        exit(0);
    
    return val;
}

int main() {
    int i, T, N, *perm;

    scanf("%d", &T);

    while(T--) {
        scanf("%d", &N);
        perm = find_permutation(N);
    
        printf("! ");
        for(i = 0; i < N; ++i)
            printf("%d ", perm[i]);
        printf("\n");

        fflush(stdout);
    }

    return 0;
}

Template Rust