Pagini recente » Cod sursa (job #2602619) | Cod sursa (job #635381) | Borderou de evaluare (job #909968) | Cod sursa (job #2594609) | Cod sursa (job #466774)
Cod sursa(job #466774)
#include <cstdio>
#include <cassert>
#define Nmax 300005
#define InFile "congr.in"
#define OutFile "congr.out"
#define foreach(ind,start,final) for (ind=start; ind<=final; ind++)
using namespace std;
int p, sf, st;
int S[2*Nmax], V[Nmax], r[Nmax];
void read();
void solve();
void write();
int main()
{
assert (freopen(InFile, "r", stdin));
assert (freopen(OutFile, "w", stdout));
read();
solve();
write();
return 0;
}
void read()
{
int i, a;
scanf("%d\n", &p);
scanf("%d ", &S[0]);
foreach (i, 1, 2*p-2)
{
scanf("%d\n", &a);
S[i]=S[i-1]+a;
}
foreach (i, 0, 2*p-2)
r[i]=S[i]%p;
}
void solve()
{
int i;
if (r[p-1]==0){
st=0,sf=p-1;return;}
foreach (i, 0, Nmax-2) V[i]=-1;
foreach (i, 0, 2*p-2)
{
if (V[r[i]]==-1)
V[r[i]]=i;
else
{
st=V[r[i]],sf=i;
if (sf-st+1==p)
return;
}
}
}
void write()
{
int i;
foreach (i, st, sf)
printf("%d ", i+1);
}