Pagini recente » Cod sursa (job #2750969) | Cod sursa (job #3293148) | Cod sursa (job #170092) | Cod sursa (job #3270914) | Cod sursa (job #2566856)
#include <cstdio>
#include <cstring>
#include <chrono>
#include <cstdlib>
#include <algorithm>
using namespace std;
FILE *f = fopen("congr.in","r");
FILE *g = fopen("congr.out","w");
const int NMAX = 3e5;
int p;
pair<int,int> v[2 * NMAX + 5];
int sum;
inline int add(int a,int b){
a += b;
if(a >= p){
a -= p;
}
return a;
}
inline int scad(int a,int b){
a -= b;
if(a < 0){
a += p;
}
return a;
}
int main(){
mt19937 gen(chrono::steady_clock::now().time_since_epoch().count());
fscanf(f,"%d",&p);
for(int i = 1;i < 2 * p;i++){
fscanf(f,"%d",&v[i].first);
v[i].first %= p;
v[i].second = i;
}
while(true){
shuffle(v + 1,v + 2 * p,gen);
sum = 0;
for(int i = 1;i < p;i++){
sum = add(sum,v[i].first);
}
for(int i = p;i < 2 * p;i++){
sum = add(sum,v[i].first);
sum = scad(sum,v[i - p].first);
if(sum == 0){
for(int j = i - p + 1;j <= i;j++){
fprintf(g,"%d ",v[j].second);
}
return 0;
}
}
}
fclose(f);
fclose(g);
return 0;
}