URI ONLINE JUDGE SOLUTION 1290 - Online Judge

Latest

This is an Online Judge Solution Base Site. We can discuss & Solve any contest solution in Programming.

Friday, April 10, 2020

URI ONLINE JUDGE SOLUTION 1290

Problem Number: 1290
Problem Name: Very Special Boxes
Author’s Name: Maratona de Programação da SBC Brazil
Timelimit: 1
Problem Category: AD-HOC
Problem Source: https://www.urionlinejudge.com.br/judge/en/problems/view/1290

Solution:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main ()
{
    ios_base :: sync_with_stdio(0); cin.tie(0);
   
    vector< pair<int, vector<int> > > v;
    vector<int> caixa;
    int n, m;
    int x,y,z, i, j, k, v1, flag, cont;
   
    while (1)
    {
        cin>>n>>m;
        if (!n && !m) return 0;
        cin>>x>>y>>z;
        caixa.push_back(x);
        caixa.push_back(y);
        caixa.push_back(z);
        sort(caixa.begin(), caixa.end());
        v1 = x*y*z;
        while (m--)
        {
            cin>>i>>j>>k;
            if ((i*j*k) - v1 >=0)
            {
                v.push_back(make_pair(i*j*k, vector<int> ()));
                v[v.size()-1].second.push_back(i);
                v[v.size()-1].second.push_back(j);
                v[v.size()-1].second.push_back(k);
                sort(v[v.size()-1].second.begin(), v[v.size()-1].second.end());
            }
        }

        flag=0;
        sort(v.begin(),v.end());
        int ans = 141241;
        cont=0;
        for (i=0; i<v.size(); i++)
        {
            cont=1;
            if (v[i].second[0] >= caixa[0] &&
                v[i].second[1] >= caixa[1] &&
                v[i].second[2] >= caixa[2] &&
                v[i].first >= v1)
            {
                for (j=i+1; j<v.size(); j++)
                {
                    if(v[i].second[0] == v[j].second[0])
                        if(v[i].second[1] == v[j].second[1])
                            if(v[i].second[2] == v[j].second[2])
                                cont++;
                    if(cont==n) break;
                }
                if (cont==n)
                {
                    ans = v[i].first - v1;
                    flag=1;
                    break;
                }
            }
        }
        if (!flag) cout<<"impossible"<<'n';
        else cout << ans << 'n';

        v.clear();
        caixa.clear();
    }
}

No comments:

Post a Comment

Thanks..