Submission #1054212

#TimeUsernameProblemLanguageResultExecution timeMemory
1054212FaustasKPalembang Bridges (APIO15_bridge)C++14
31 / 100
2092 ms4804 KiB
#include <bits/stdc++.h>

using namespace std;

struct gyventojas
{
    char p;
    int s;
    char q;
    int t;
};

const int maxn = 100000;

int k, n;
gyventojas M[maxn];

int main()
{
    ios_base::sync_with_stdio(false); cin.tie(0);
    cin >> k >> n;
    long long A_puse = 0;
    long long B_puse = 0;
    vector <int> reikalingi;
    vector <int> nereikalingi;
    vector <int> medianai;
    for(int i = 0; i<n; i++)
    {
        cin >> M[i].p >> M[i].s >> M[i].q >> M[i].t;
        if(M[i].p != M[i].q)
        {
            reikalingi.push_back(i);
            medianai.push_back(M[i].s);
            medianai.push_back(M[i].t);
            if(M[i].p == 'A' && M[i].q == 'B')
            {
                A_puse += M[i].s;
                B_puse += M[i].t;
            }
            else
            {
                A_puse += M[i].t;
                B_puse += M[i].s;
            }
        }
        else nereikalingi.push_back(i);
    }
    int kiek = reikalingi.size();
    long long ats = 0;
    if(kiek>0)
    {
        /*long long suma = A_puse + B_puse;
        double liekana1 = suma%2;
        //cout << liekana1 << endl;
        liekana1/=2;
        suma/=2;
        //cout << suma << endl;
        //cout << liekana1 << endl;
        double liekana2 = suma%kiek;
        //cout << liekana2 << endl;
        liekana2 += liekana1;
        //cout << liekana2 << endl;
        liekana2/=kiek;
        //cout << liekana2 << endl;
        suma/=kiek;
        //cout << suma << endl;
        double dsuma = suma + liekana2;
        //cout << dsuma << endl;
        int tiltas = round(dsuma);
        //cout << ats;*/
        if(k == 1)
        {
            sort(medianai.begin(), medianai.end());
            int tiltas = medianai[medianai.size()/2];
            for(int i = 0; i<reikalingi.size(); i++)
            {
                int j = reikalingi[i];
                ats += abs(M[j].s - tiltas) + abs(M[j].t - tiltas);
            }
        }
        else
        {
            ats = 1000000000000000;
            for(int i = 0; i<medianai.size(); i++)
            {
                for(int j = 0; j<medianai.size(); j++)
                {
                    if(i == j) continue;
                    int tiltas1 = medianai[i];
                    int tiltas2 = medianai[j];
                    long long maz_ats = 0;
                    for(int f = 0; f<reikalingi.size(); f++)
                    {
                        int x = reikalingi[f];
                        int a1 = abs(M[x].s - tiltas1) + abs(M[x].t - tiltas1);
                        int a2 = abs(M[x].s - tiltas2) + abs(M[x].t - tiltas2);
                        maz_ats += min(a1, a2);
                    }
                    ats = min(ats, maz_ats);
                }
            }
        }
    }
    for(int i = 0; i<nereikalingi.size(); i++)
    {
        int j = nereikalingi[i];
        ats += abs(M[j].s - M[j].t);
    }
    cout << ats + reikalingi.size();
    return 0;
}

Compilation message (stderr)

bridge.cpp: In function 'int main()':
bridge.cpp:75:29: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   75 |             for(int i = 0; i<reikalingi.size(); i++)
      |                            ~^~~~~~~~~~~~~~~~~~
bridge.cpp:84:29: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   84 |             for(int i = 0; i<medianai.size(); i++)
      |                            ~^~~~~~~~~~~~~~~~
bridge.cpp:86:33: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   86 |                 for(int j = 0; j<medianai.size(); j++)
      |                                ~^~~~~~~~~~~~~~~~
bridge.cpp:92:37: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   92 |                     for(int f = 0; f<reikalingi.size(); f++)
      |                                    ~^~~~~~~~~~~~~~~~~~
bridge.cpp:104:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  104 |     for(int i = 0; i<nereikalingi.size(); i++)
      |                    ~^~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...