Cod sursa(job #466774)

Utilizator rusu_raduRusu Radu rusu_radu Data 27 iunie 2010 14:39:59
Problema Congr Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2010, clasele X-XII, Ziua 1 Marime 1.09 kb
#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);
}