Решение задачи "Круг монстров" с Codeforces

Без пояснения   Просмотров: 12


Вы играете в очередную компьютерную игру, и теперь вам предстоит убить n монстров. Эти монстры стоят в круге, пронумерованном по часовой стрелке от 1 до n. Изначально i-й монстр имеет ai единиц здоровья.

Вы можете стрелять в монстров, чтобы убить их. Каждый выстрел требует ровно одной пули и уменьшает здоровье монстра на 1 (наносит ему 1 единицу урона). Кроме того, когда здоровье некоторого монстра i становится 0 или меньше 0, он умирает и взрывается, нанося bi урон следующему монстру (монстру под номером i+1, если i
Вы должны посчитать минимальное количество пуль, которое нужно выстрелить, чтобы убить всех n монстров в кругу.

Код

#include<bits/stdc++.h>
using namespace std;
long long ans,t,i,j,a[300300],b[300300],m,n;
int main(){
	cin>>t;
	for(j=1;j<=t;j++){
		cin>>n;
		ans=0;
		m=1000000000111;
		for(i=1;i<=n;i++) scanf("%lld %lld", &a[i], &b[i]);
		a[n+1]=a[1];
		for(i=1;i<=n;i++){
			if(a[i+1]>b[i]){
				ans=ans+a[i+1]-b[i];
				if(b[i]<m) m=b[i];
			}
			else if(a[i+1]<m) m=a[i+1];
		}
		ans=ans+m;
		cout<<ans<<endl;
	}
}

         

 Администратор Photo Автор: Администратор


Отправить решение задачи
Чтобы отправить решение вам нужно войти в систему или зарегистрироваться

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться