Submission #1054705

#TimeUsernameProblemLanguageResultExecution timeMemory
1054705KebabuVaikis15Palembang Bridges (APIO15_bridge)C++14
22 / 100
67 ms9152 KiB
#include <bits/stdc++.h>
using namespace std;

const int MAXN=100000;
long long k, n, pradSuma=0, suma=0;
char a[MAXN], b[MAXN];
long long x[MAXN], y[MAXN];

vector<tuple<long long, long long, long long>> keliai;
long long dPtr=0;
long long dKairej=0, dDesinej;

void tinkintDesine(long long id1, long long id2)
{
    while (dKairej<dDesinej)
    {
        long long pradPos=get<0>(keliai[dPtr]);
        dPtr++;
        suma-=2ll*(get<0>(keliai[dPtr])-pradPos)*(dDesinej-dKairej);
        if (get<1>(keliai[dPtr])==0)
            dDesinej--;
        else
            dKairej++;
    }
}

int main()
{
    cin>>k>>n;
    for (int i=0; i<n; i++)
    {
        cin>>a[i]>>x[i]>>b[i]>>y[i];
        if (x[i]>y[i])
                swap(x[i], y[i]);
        pradSuma+=y[i]-x[i];
        if (a[i]!=b[i])
        {
            pradSuma++;
            keliai.push_back(make_tuple(x[i], 0, i));
            keliai.push_back(make_tuple(y[i], 1, i));
        }
    }
    keliai.push_back(make_tuple(0, 0, 0));
    sort(keliai.begin(), keliai.end());
    for (int i=0; i<n; i++)
        if (a[i]!=b[i])
            suma+=2ll*x[i];
    dDesinej=keliai.size()/2;
    tinkintDesine(-1, -1);
    if (k==1)
    {
        cout<<pradSuma+suma<<endl;
        return 0;
    }
}
#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...