Submission #166988

# Submission time Handle Problem Language Result Execution time Memory
166988 2019-12-05T06:55:52 Z Charis02 Ideal city (IOI12_city) C++14
0 / 100
50 ms 5752 KB
#include<iostream>
#include<vector>
#include<set>
#include<cmath>
#include<map>
#define ll long long
#define pi pair < ll,ll >
#define mp(a,b) make_pair(a,b)
#define rep(i,a,b) for(int i = a;i < b;i++)
#define MAXN 200000

using namespace std;

ll n,mod=1000000000;
pi ar[MAXN];
map < pi,bool > grid;
ll dx[] = {-1,1,0,0};
ll dy[] = {0,0,1,-1};
pi xcords;
pi ycords;
map < pi,bool > vis;

void dfs(pi cur)
{
    vis[cur]=true;
    xcords.first = min(xcords.first,cur.first);
    ycords.first = min(ycords.first,cur.second);
    xcords.second = max(xcords.second,cur.first);
    ycords.second = max(ycords.second,cur.second);

    rep(d,0,4)
    {
        pi neo = cur;
        neo.first+=dx[d];
        neo.second+=dy[d];

        if(!vis[neo] && grid[neo])
        {
            dfs(neo);
        }
    }

    return;
}

ll expo(ll v,ll e)
{
    if(e == 0)
        return 1;
    if(e == 1)
        return v;

    ll x = expo(v,e/2);
    x =(x*x)%mod;

    if(e%2==1)
        x=(x*v)%mod;

    return x;
}

ll inverse(ll x)
{
    return expo(x,mod-2);
}

ll calculate_sum()
{
    ll w = xcords.second-xcords.first+1;
    ll h = ycords.second-ycords.first+1;

    ll res = ((((((w-1)*w)%mod)*((h*h)%mod))%mod*(w+1))%mod + (((((h-1)*h)%mod)*((w*w)%mod))%mod*(h+1))%mod)*inverse(6)%mod;
}

int DistanceSum(int N, int *X, int *Y)
{
 //   cin >> n;
    n=N;
    rep(i,0,n)
    {
        ar[i].first =X[i];
        ar[i].second=Y[i];

       //cin >> ar[i].first>>ar[i].second;
       grid[mp(ar[i].first,ar[i].second)] = true;
    }

    xcords.first = ar[0].first;
    xcords.second = ar[0].first;
    ycords.first = ar[0].second;
    ycords.second = ar[0].second;

    dfs(ar[0]);

    return calculate_sum();
}


/*
6
0 0
0 1
0 2
1 2
1 1
1 0
*/

Compilation message

city.cpp: In function 'long long int calculate_sum()':
city.cpp:73:8: warning: unused variable 'res' [-Wunused-variable]
     ll res = ((((((w-1)*w)%mod)*((h*h)%mod))%mod*(w+1))%mod + (((((h-1)*h)%mod)*((w*w)%mod))%mod*(h+1))%mod)*inverse(6)%mod;
        ^~~
city.cpp:74:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 256 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 4 ms 632 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 37 ms 4536 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 50 ms 5752 KB Output isn't correct
2 Halted 0 ms 0 KB -