Omówienie zadania “Kalendarze”

Omówienie zadania “Kalendarze” z II etapu poprzednich edycji OIJ (https://szkopul.edu.pl/p/default/problemset/oig/3)
Link do zadania:
Zadanie omawia Jasiek Strzeszyński – zwycięzca OIJ, złoty medalista Europejskiej Olimpiady Informatycznej Juniorów
#include<bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
using namespace std;
int pref[2][1000010];
int size[2];
void sol(int mi,int d,bool c)
{
	int p,k,s;
	d+=pref[c][mi-1];
	p=1;
	k=size[!c];
	while(p<k)
	{
		s=(p+k)/2;
		if(pref[!c][s]>=d)
			k=s;
		else
			p=s+1;
	}
	cout<<d-pref[!c][p-1]<<" "<<p<<"\n";
	return;
}
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	int n,m,z,mi,d,i;
	char c;
	cin>>n>>m;
	size[0]=n;
	size[1]=m;
	for(i=1;i<=n;i++)
	{
		cin>>pref[0][i];
		pref[0][i]+=pref[0][i-1];
	}
	for(i=1;i<=m;i++)
	{
		cin>>pref[1][i];
		pref[1][i]+=pref[1][i-1];
	}
	cin>>z;
	for(i=1;i<=z;i++)
	{
		cin>>d>>mi>>c;
		sol(mi,d,(c=='B'));
	}
	return 0;
}

Nie dodano jeszcze komentarza, rozpocznij dyskusję pierwszy.

Dodaj komentarz