Cod sursa(job #466621)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 27 iunie 2010 12:11:59
Problema Congr Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2010, clasele X-XII, Ziua 1 Marime 1.44 kb
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <vector>

using namespace std;

#define file_in "congr.in"
#define file_out "congr.out"

#define nmax 301000

int p;
int a[2*nmax+10];
int frecv[2*nmax+10];

void citire()
{
    int i,x;
    freopen(file_in,"r",stdin);
    freopen(file_out,"w",stdout);

    scanf("%d", &p);
    for (i=1;i<=2*p-1;++i)
    {
        scanf("%d", &x);
        a[i]=x%p;
    }

}

void solve()
{
    int i,j,suma,k,r;
    i=p+1;
    j=2;
    while(j<=p && i<2*p)
    {
        suma=a[i]-a[j];
        if (suma%p==0)
        {
            for (k=j;k<=i;++k)
                 printf("%d ", k);
            exit(0);
        }
        i++;
        j++;
    }

    suma=0;
    for (i=1;i<=p;++i)
        suma+=a[i];
    if (suma%p==0)
    {
        for (i=1;i<=p;++i)
             printf("%d ", i);
          exit(0);
    }

    r=suma%p;
    i=p+1;
    j=2;
    while(j<=p && i<2*p)
    {
        suma=a[i]-a[j];
        if (suma%p==p-r)
        {
            for (k=j;k<=i;++k)
                 frecv[k]=1;
            for (k=1;k<=p;++k)
                 frecv[k]=1;
            for (k=1;k<=2*p-1;++k)
                 if (frecv[k]) printf("%d ", k);
            exit(0);
        }
        i++;
        j++;
    }




}

int main()
{
    citire();
    solve();

    fclose(stdin);
    fclose(stdout);

    return 0;
}