Pagini recente » Cod sursa (job #2445013) | Cod sursa (job #443948) | Monitorul de evaluare | Cod sursa (job #145974) | Cod sursa (job #1916387)
#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;
}