lunes, 24 de octubre de 2011

661 - Blowing Fuses - UVA

#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
#define db(a) cout << #a << " = " << a << endl;
#include 
using namespace std;
int main(){
 int n, m, c;
 int cont = 1;
 //freopen("in.in", "r", stdin);
 //freopen("ou.out", "w", stdout);
 while(cin >> n >> m >> c){
  if(n == 0 && m == 0 && c == 0) break;
  vector estado(n + 1, false);
  vector consumo(n + 1, 0);
  for(int i = 1; i <= n; i++){
   cin >> consumo[i];
  }
  int maxi = 0;
  int id = 0;
  int res = 0;
  bool blown = false;
  for(int i = 1; i <= m && !blown; i++){
   cin >> id;
   if(estado[id]){
    maxi -= consumo[id];
    estado[id] = false;
   }
   else{
    maxi += consumo[id];
    if(maxi > c) {
     blown = true;
     for(int r = i + 1; r <= m; r++) cin >> id;
    }
    estado[id] = true;
    res = max(res, maxi);
   }
  }
  cout << "Sequence " << cont++ << endl;
  if(!blown) {
   cout << "Fuse was not blown." << endl;
   cout << "Maximal power consumption was " << res << " amperes." << endl << endl;
  }
  else{
   cout << "Fuse was blown." << endl << endl;
  }
 }
 return 0;
}



No hay comentarios:

Publicar un comentario