Pagini recente » Cod sursa (job #2750978) | Cod sursa (job #562066) | Cod sursa (job #3214113) | Cod sursa (job #1861287) | Cod sursa (job #2365075)
#include<fstream>
#include<cmath>
#include<cctype>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<iomanip>
#include<unordered_map>
#define x first
#define y second
#define pb push_back
using namespace std;
//ifstream fin("congr.in");
ofstream fout("congr.out");
FILE *fin=fopen("congr.in","r");
const int maxb=300192;
int ptr=maxb;
char buf[maxb+5];
inline int getint()
{
int nr=0;
while(!isdigit(buf[ptr]))
if(++ptr>=maxb)
fread(buf,maxb,1,fin),ptr=0;
while(isdigit(buf[ptr]))
{
nr=nr*10+buf[ptr]-'0';
if(++ptr>=maxb)
fread(buf,maxb,1,fin),ptr=0;
}
return nr;
}
const int DN=6e5+5;
int n,m,a[DN],sum,p[DN],lst[DN];
string s;
void add(int f)
{
if(f==0)
return;
add(f/10);
f%=10;
s+=char('0'+f);
}
int main()
{
n=getint();
m=n;
n=2*n-1;
for(int i=1;i<=n;i++)
{
a[i]=getint();
a[i]%=m;
p[i]=i;
}
while(1)
{
random_shuffle(p+1,p+n+1);
sum=0;
for(int i=0;i<=m;i++)
lst[i]=0;
for(int i=1;i<=n;i++)
{
sum=(sum+a[p[i]])%m;
if(i>=m)
{
sum=(sum+m-a[p[i-m+1]])%m;
lst[a[p[i-m+1]]]=p[i-m+1];
}
if(lst[(m-sum)%m]&&i>=m)
{
add(lst[(m-sum)%m]);
s+=' ';
for(int j=i-m+2;j<=i;j++)
{
add(p[j]);
s+=' ';
}
fout<<s;
return 0;
}
}
}
}