Cod sursa(job #1916387)

Utilizator DenisONIcBanu Denis Andrei DenisONIc Data 9 martie 2017 09:20:51
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
#include <cstdio>
#define Nmax 100001
#define index 100000
using namespace std;

ofstream g("diff.out");


int v,n,m,mn,mx,sav1 = 1,sav2 = 1,x;
pair<int,int> S[200022];
int main()
{
    freopen("diff.in","r",stdin);
    scanf("%d%d",&n,&m);

    for (int i=1;i<=n;i++)
    {
        scanf("%d",&v);
        if (v==0)
            v = -1;
        mn += v;
        mx += v;
        if (S[mn+index].first == 0)
            S[mn+index].first = sav1,S[mn+index].second = i;
        if (S[mx+index].first == 0)
            S[mx+index].first = sav2,S[mx+index].second = i;
        if (mn>0)
        {
            mn = 0;
            sav1 = i+1;
        }
        if (mx<0)
        {
            mx = 0;
            sav2 = i+1;
        }

    }

    for (int i=1;i<=m;i++)
    {
        scanf("%d",&x);
        if (x>n || x<-n || S[x+index].first==0)
            g<<"-1\n";
        else
            g<<S[x+index].first<<' '<<S[x+index].second<<'\n';
    }

    return 0;
}