Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2020-05-29 19:45:04.
Revizia anterioară Revizia următoare
Revizia anterioară Revizia următoare
Template C++
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int query(string A, string B);
void answer(vector<int> perm);
// De aici in sus nu ar trebui sa modifici nimic
std::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;
}
void answer(vector<int> perm) {
cout << "! ";
for(auto it: perm)
cout << it << " ";
cout << endl;
}
int main() {
int T;
cin >> T;
while(T--) {
int N;
cin >> N;
vector<int> perm = find_permutation(N);
answer(perm);
}
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;
}